findからexecに関数引数を渡す

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>

ベストアンサー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/" {} +
}

おすすめ記事