2017-08-31 65 views
0

我有多个文件,如下如何删除文件名中的模式在Unix/Linux操作系统

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

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

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

File1.txt 
File2.txt 
File3.txt 
+0

你可以举一个[Pattern]的例子吗? –

回答

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实际操作。