2013-06-20 74 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在文件列表的輸出上連續兩次完成的事實。在第二次迭代中,以前移動的文件不再存在。當然有更乾淨的方法來做到這一點。 –

相關問題