我發現有幾個類似的問題有解決方案,只是它們不涉及變量。使用替換和變量重命名文件和目錄
我在文件和目錄的樹中有特定的模式 - 模式是單詞模板。我想要一個腳本文件來重命名所有的文件和目錄,用變量$ {newName}
中包含的一些其他名稱替換單詞TEMPLATE如果我知道$ {newName}的值是「弗雷德住在這裏」,然後在命令
find . -name '*TEMPLATE*' -exec bash -c 'mv "$0" "${0/TEMPLATE/Fred lives here}"' {} \;
將做的工作
但是,如果我的腳本是:
newName="Fred lives here"
find . -name '*TEMPLATE*' -exec bash -c 'mv "$0" "${0/TEMPLATE/${newName}}"' {} \;
然後Word模板由n代替ULL而不是「弗雷德住在這裏」
我需要的「」大約$ 0,因爲有在路徑名稱空間,所以我不能做這樣的事情:
find . -name '*TEMPLATE*' -exec bash -c 'mv "$0" "${0/TEMPLATE/"${newName}"}"' {} \;
誰能幫助我得到這個腳本工作,使得包含Word模板的所有文件和目錄都模板代替任何的${newName}
值
例如,如果newName="A different name"
和我有
/foo/bar/some TEMPLATE directory/with files
目錄,然後日Ë目錄將被重新命名爲
/foo/bar/some A different name directory/with files
和一個名爲some TEMPLATE file
文件將被重新命名爲
some A different name file
你不想'$ 0'這些表達式。 '$ 0'的值是正在運行的程序,'bash -c'腳本的值是'bash''。 你正在使用哪種類型的系統?我會尋找'rename'命令並利用它。 –
@Mark Reed。我不認爲_rename_命令可以做目錄。至少我不能讓它工作 - 我確實嘗試過。儘管* 0 *不是正確的,它的工作原理,所以我會堅持下去。 – rednectar