![如何重命名所有包含特定字符的目录](https://linux22.com/image/1532599/%E5%A6%82%E4%BD%95%E9%87%8D%E5%91%BD%E5%90%8D%E6%89%80%E6%9C%89%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E7%9A%84%E7%9B%AE%E5%BD%95.png)
所以我问了这个问题如何查找包含特定字符的目录。
现在我想把这个字符改成其他的(不是整个名字,只是一个字符)
例子:
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 会将其视为命令分隔符。