2016-03-14 56 views
0

我正在編寫一個bash腳本,用於將現有目錄複製到另一個目錄中,並在那裏修改所有包含舊目錄名稱的文件名,以替換新名稱。使用bash替換目錄中的文件名

我使用這個命令,它工作正常

find . -depth -name '*foo*' -execdir bash -c 'for f; do mv -i "$f" "${f//foo/bar}"; done' bash {} + 

不過,我必須爲幾個目標目錄做到這一點,我想在上面命令的「欄」字符串包含成變量,所以我可以在循環中更改變量的內容(迭代數組)並複製並批量替換這些文件。

我應該對命令做些什麼改變?我試過以下,但它不工作

app="Workflow2"; 
strChange="f//Workflow1/"${app}; 
find . -depth -name '*Workflow1*' -execdir bash -c 'for f; do mv -i "$f" "${strChange}"; done' bash {} + 

回答

0

的命令必須修改爲以下

$(find . -depth -name '*Workflow1*' -execdir bash -c 'for f; do mv -i "$f" "${'${strChange}'}"; done' bash {} +) 
相關問題