2013-06-20 35 views
0

我有相当一些文件我想重新命名(太多手动做),通常我会使用Automator,但事情是,我需要每个其他文件被称为相同收到文件,但1重命名所有其他文件

2这实际上是我的文件至今

xxx - 401a - yyy.zzz 
xxx - 401b - yyy.zzz 
xxx - 402a - yyy.zzz 
xxx - 402b - yyy.zzz 
xxx - 403a - yyy.zzz 

等等,但我想给他们重命名为类似

xxx - 401-pt1.zzz 
xxx - 401-pt2.zzz 
xxx - 402-pt1.zzz 
xxx - 402-pt2.zzz 
xxx - 403-pt1.zzz 

无论如何用automator做到这一点?询问是因为我很少使用Automator,这意味着我不完全称为专家。

编辑:这就是我想要实现:http://wiki.plexapp.com/index.php/Media_Naming_and_Organization_Guide#Stacked_Episodes

回答

2

如果你不知道该工具比你不会介意用别的什么吗?如何一个简单的shell命令?

以下是在Bash中增加通用性级别的相同操作。你可能不会关心前两个,因为它已经对yyy和zzz进行了硬编码,但是我已经做了一些步骤来让你了解第三个。

for file in * ; do mv "$file" "$(echo $file | sed 's/a - yyy/-pt1/g')"; mv "$file" "$(echo $file | sed 's/b - yyy/-pt2/g')"; done 

for file in * ; do mv "$file" "$(echo $file | sed 's/a - .*.zzz/-pt1.zzz/g')"; mv "$file" "$(echo $file | sed 's/b - .*.zzz/-pt2.zzz/g')"; done 

for file in * ; do mv "$file" "$(echo $file | sed -r 's/a - .*.([a-z]{3})/-pt1.\1/')"; mv "$file" "$(echo $file | sed -r 's/b - .*.([a-z]{3})/-pt2.\1/')"; done 

当然,其他命令一定有很多其他的方法。 你会得到不重要的错误,因为mv在整个批次上完成了两次。

+0

嗯,似乎没有工作...每次我尝试'sed:非法选项 - r''用法:sed脚本[-Ealn] [-i扩展名] [文件...] sed [-Ealn] [-i扩展名] [-e脚本] ... [-f script_file] ... [文件...] mv:重命名冒险时间 - 213-pt2 - 致死反冲{C_P}(720p ).mkv到:没有这样的文件或目录# – Mobilpadde

+0

它看起来像@SébastienDawans已经投入了相当多的精力,他计划研究和学习他提出的解决方案,但首先,我想警告你这个评论:>你会得到不重要的错误,因为mv在整个批次上完成了两次。我不认为忽略错误是明智的 - 甚至在编程时通常会忽略警告。我将回到您的更多关于如何理解bash shell脚本的想法。 – Kaydell

+0

嗨,感谢您的评论 我提到,“错误”,这是来自mv在文件列表的输出上连续两次完成的事实。在第二次迭代中,以前移动的文件不再存在。当然有更干净的方法来做到这一点。 –

相关问题