如何从Unix / Linux中的文件名中删除模式

时间:2017-08-31 03:40:35

标签: linux bash ubuntu unix

我有多个文件,如下所示

File1[Pattern].txt
File2[Pattern].txt
File3[Pattern].txt

我想从目录中的所有文件中删除[Pattern]。

最后,文件名应如下所示。

File1.txt
File2.txt
File3.txt

1 个答案:

答案 0 :(得分:0)

使用bash参数展开(${f%%\[*\]*})从第一个[(左起)开始剥离部分,并使用mv重命名:

for f in *.txt; do echo mv -- "$f" "${f%%\[*\]*}".txt; done

删除echo以进行实际操作。

使用renameprename),匹配的组1匹配第一个[之前的部分,第二个组匹配文字.txt。在替换中,我们刚刚使用了捕获的组:

rename -n 's/^([^[]+)\[[^]]+\](\.txt)$/$1$2/' *.txt

放弃 - n进行实际操作。