2015-04-05 93 views
-1

我想在某些目錄下重命名png文件。新的文件名應該是目錄名稱,如DirectoryNameFileName.png。 我認爲這個命令必須如下,但是這不起作用。任何幫助將不勝感激。 謝謝。 我的環境是Mac OSX GNU bash。重命名文件以包含父目錄

find . -name '*.png' -type f -exec bash -c 'mv {} ./{basename `pwd`}{}' \; 

回答

1

我認爲,這得到你想要的輸出:

find . -name '*.png' -type f -exec bash -c 'mv {} "./$(basename "$(pwd)"){}"' \; 

順便說一句,這是爲什麼$()語法優於用於命令替換反引號`一個很好的例子,因爲它使嵌套了很多更輕鬆。 您可以使用可能shell變量$PWD而不是調用命令pwd的:

find . -name '*.png' -type f -exec bash -c 'mv {} "./$(basename "$PWD"){}"' \; 

我不能在此刻進行測試,但可能需要使用-execdir而非-exec,使運行的命令從找到每個文件的目錄,而不是從您運行find的目錄。

+0

非常感謝。 – 2015-04-05 14:06:17

相關問題