Bash
在 find 中將函式的參數傳遞給 exec
我想定義一個函式來查找和替換多個文件中的文本。我找到命令行
find . -type f -exec bash -c 'mv "$1" "${1/<string_to_find>/<string_to_replace>}"' _ {} \;
因為我需要經常使用它,所以我想把它放到我
.zshrc
文件中的一個函式中,比如myrename() { find . -type f -exec bash -c 'echo mv "$1" "${1/$arg1_myrename/$arg2_myrename}"' _ {} \; }
以便在名稱中包含的
$ myrename "<string_to_replace>" "<replacement>"
文件夾中<string_to_replace>
的所有文件執行時將其替換為<replacement>
.
您可以將模式和參數作為環境參數傳遞給
find
:myrename(){ in=$1 out=$2 find . -type f -exec bash -c 'mv -- "$1" "${1/$in/$out}"' _ {} \; }
但是,正如 Kusalananda 所說,這就是
rename
事實。myrename(){ find . -type f -exec rename "s/$1/$2/" {} + }