将函数的参数传递给 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}"' _ {} \;
}

但是,正如拘萨罗南达所说,事实就是如此rename

myrename(){
    find . -type f -exec rename "s/$1/$2/" {} +
}

相关内容