我有几个文件的名字是
(a).1
(a).2
...
(a).100
由于许多处理工具并不真正喜欢文件名中的(
“和”,)
我认为最好将它们重命名为其他名称。我在 Google 上搜索了重命名文件的方法,找到了一个很棒的工具,rename
我可以在其中输入正则表达式。好的,让我们试试这个:
$ rename -v s/\(a\)/b/ \(a\).*
(a).1 renamed as (b).1
(a).2 renamed as (b).2
(a).3 renamed as (b).3
嗯,不是我所期望的。经过一番谷歌搜索,我发现这\(
\)
是一个分组运算符。这有点道理,因为我没有(
)
在命令中逃避。
我通过使用与.
所有类型的值匹配的字符解决了重命名问题:
rename -v s/.b./b/ \(b\).*
这个解决方案不太好。那么如何在 Bash/Linux/Unix Regex 中匹配(
和?)
答案1
您需要:
find -name "(*)*" -type f | rename 's/\(|\)//g'
它首先在当前目录中查找与描述的名称匹配的文件,然后通过删除括号来重命名它们。您可以看到匹配的字符(和)被替换为空。