2013-12-18 120 views
1

我有一個很大的系列目錄和子目錄中有許多jpgs。我需要做兩件事情:bash腳本 - 麻煩重命名文件在子目錄中使用查找/重命名

  1. 創建它自己的子目錄中找到的每個JPG格式的副本
  2. 重命名此複製JPG,使得apple.jpg變得apple_m.jpg

我曾嘗試爲了運行以下命令:

//這將創建找到的每個JPG的副本,且將「_M」到它

find . -name '*.jpg' -execdir cp {} {}_m \; 
01月底

//現在又在年底找到「jpg_m」一切並改名爲filename_m.jpg

find . -name '*.jpg_m' -execdir rename -v 's/\.jpg_m/_m\.jpg/' {} \; 

但是一點兒也不二號命令似乎工作,有人可以解釋我做錯了什麼?

感謝, 阿迪

回答

0

要重命名的文件,你可以簡單地使用這種方式 rename ".jpg_m" "_m.jpg" files_to_rename

所以,如果你想複製和重命名,你可以用這種方式將其重命名:

find . -name "*.jpg_m" -execdir rename ".jpg_m" "_m.jpg" {} \; 
+0

你甚至可以用'\ +'而不是'\;'一次將多個文件名傳遞給'rename'。 – RedX

0

你爲什麼不一次就做到這一點?

find . -name '*.jpg' -exec cp {} m_{} \; -exec rename "m_" "" {} \; 
+0

我需要它與子文件夾一起工作,所以試圖改變你的解決方案來使用'execdir'而不是exec,但它仍然沒有工作,還需要在末尾放置「m_」或發生這種情況:cp:無法創建常規文件'm_./groupThumb70X70.jpg':沒有這樣的文件或目錄 – user3114581