一尘不染

批量重命名文件

linux

我想批量重命名目录中的多个文件,以便从文件名中删除前面的数字和连字符。

Old file name: 2904495-XXX_01_xxxx_20130730235001_00000000.NEW
New file name:         XXX_01_xxxx_20130730235001_00000000.NEW

如何使用linux命令执行此操作?


阅读 278

收藏
2020-06-07

共1个答案

一尘不染

这应该使它:

rename 's/^[0-9]*-//;' *

它从块的开头[0-9](即数字)开始多次,然后连字符-并将其从文件名中删除。


如果rename不在您的计算机中,则可以使用循环和mv

mv "$f" "${f#[0-9]*-}"

测试

$ ls
23-aa  hello aaa23-aa
$ rename 's/^[0-9]*-//;' *
$ ls
aa  hello aaa23-aa

要么:

$ ls
23-a  aa23-a  hello
$ for f in *;
> do
>   mv "$f" "${f#[0-9]*-}"
> done
$ ls
a  aa23-a  hello
2020-06-07