查找并替换目录名称中的字符串

查找并替换目录名称中的字符串

我有一个必须恢复的文件结构,它的名称中包含 :2f

例如目录名称anyname:2fmorename

我希望能够在所有目录和子目录中更改:2f为。_

我想类似的事情

find . -name *:2f* -type d -execdir mv{} *_* \;

但我无法确定。

答案1

如果你安装了 Perl,rename你可以这样做:

find . -name '*:2f*' -type d -exec rename 's/:2f/_/g' {} \;

如果你想先测试一下然后添加一个echo

find . -name '*:2f*' -type d -exec echo rename 's/:2f/_/g' {} \;

答案2

谢谢,我最终使用以下方法让它工作:

find /path -depth -type d -name '*:2f*' -execdir bash -c 'mv -v "$1" "${1//:2f/_}"' _ {} \;

相关内容