複数のファイルでテキストを検索して置換する機能を定義したいと思います。コマンドラインが見つかりました
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>
答え1
モードとパラメータを環境パラメータとして次に渡すことができますfind
。
myrename(){
in=$1 out=$2 find . -type f -exec bash -c 'mv -- "$1" "${1/$in/$out}"' _ {} \;
}
しかし、Kosalonandaが言ったように、それはまさにそれですrename
。
myrename(){
find . -type f -exec rename "s/$1/$2/" {} +
}