所以我问了这个问题如何查找包含特定字符的目录。
现在我想把这个字符改成其他的(不是整个名字,只是一个字符)
例子:
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 会将其视为命令分隔符。