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


0

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

现在我想把这个角色改成别的东西(不是整个名字只是一个角色)

例:

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

我怎么做?

这是我的代码

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

Answers:


0

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

rename 's/_/-/g' dirname

(该 g 替换所有出现的事件。如果您只想替换一次,请省略它)

将此与您的相结合 find 声明:

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

您可能需要对其进行修改以使变量替换正常工作。

注意: {} 告诉 -execdir/-exec 在命令中插入文件名的位置;该 ; 告诉它命令的结束 - 你需要用它来逃避它 \ 因为否则shell会将其视为命令分隔符。


谢谢它的工作。但为什么我需要{}和反斜杠?
Devid Demetz

{} 告诉 -execdir/-exec 在命令中插入文件名的位置;该 ; 告诉它命令的结束 - 你需要用它来逃避它 \ 因为否则shell会将其视为命令分隔符。
Joe P

好的,谢谢。你解释得很好)
Devid Demetz

添加到答案:)
Joe P
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.