我想定义一个函数来查找和替换多个文件中的文本。我找到了命令行
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}"' _ {} \;
}
但是,正如拘萨罗南达所说,事实就是如此rename
。
myrename(){
find . -type f -exec rename "s/$1/$2/" {} +
}