我可以使用什么命令来重命名当前命名的数百个文件
file.2003-01-02.txt
file.2003-01-04.txt
...等等?我希望他们被命名为:
file_y2003m01d02.txt
file_y2003m01d04.txt
...等等
换句话说,file.2007-12-09.txt
将变为 file_y2007m12d09
。是否有一组简单的命令可以执行此操作?
同样,我还有另一个问题,文件名为file_y2003m02d01_grid.txt
。我想知道如何从每个文件名中删除 _grid
,以便它符合我上面建议的格式。
最佳答案
您可以使用重命名
命令:
rename 's/^file\.([0-9]{4})-([0-9]{2})-([0-9]{2})\.txt$/file_y$1m$2d$3.txt/' *
这使用 Perl regular expression substitution转换文件名。上面的命令表示:
查找以
file.
开头^
的文件(.
必须转义,否则它会匹配任何字符),然后按捕获的()
组[0-9]{4}
(一个数字,4 次),然后是-
,然后是另一个捕获的组一个数字两次,等等,并以.txt
结尾$
;然后,将这些文件重命名为
file_y
,后跟第一个捕获的组$1
、m
,然后是第二个捕获组$2
等,并以.txt
结尾。
您还应该能够弄清楚如何使用相同的命令来解决您的第二个问题,而您不知道 rename
的工作原理。
关于linux - 如何按日期批量重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18002250/