我有多个文件,如下所示
File1[Pattern].txt
File2[Pattern].txt
File3[Pattern].txt
我想从目录中的所有文件中删除[Pattern]。
最后,文件名应如下所示。
File1.txt
File2.txt
File3.txt
答案 0 :(得分:0)
使用bash
参数展开(${f%%\[*\]*}
)从第一个[
(左起)开始剥离部分,并使用mv
重命名:
for f in *.txt; do echo mv -- "$f" "${f%%\[*\]*}".txt; done
删除echo
以进行实际操作。
使用rename
(prename
),匹配的组1
匹配第一个[
之前的部分,第二个组匹配文字.txt
。在替换中,我们刚刚使用了捕获的组:
rename -n 's/^([^[]+)\[[^]]+\](\.txt)$/$1$2/' *.txt
放弃 - n
进行实际操作。