如何重命名所有包含特定字符的目录

如何重命名所有包含特定字符的目录

所以我问了这个问题如何查找包含特定字符的目录。

现在我想把这个字符改成其他的(不是整个名字,只是一个字符)

例子:

find "a"
     aaa 
     bab
replace with "c"
     ccc
     bcb

我怎么做?

这是我现在有的代码

read -p "find what character: " findwhat
find . -name "*$findwhat*" -type d -print

答案1

一种方法是使用rename(又名prename)。替换_-

rename 's/_/-/g' dirname

g替换所有出现的项。如果只想替换一次,请省略它)

将此与您的find陈述结合起来:

find . -name "*$findwhat*" -type d -execdir rename "s/$findwhat/$replacewith/g" {} \;

您可能需要修改它才能使变量替换正常工作。

注意:告诉{}-execdir/-exec命令中插入文件名的位置;告诉;它命令在何处结束 - 并且您需要用它进行转义\,否则 shell 会将其视为命令分隔符。

相关内容