使用正则表达式重命名文件(Linux 命令行)

使用正则表达式重命名文件(Linux 命令行)

我有一个正在创建两个文件的备份脚本:

A)db_mywebsite_2018-01-10_00-25.sql.gz

b)我的网站1_2018-01-10_00-01.tar.gz

我正在寻找一个带有正则表达式的 Linux 命令来重命名两个文件以匹配 db_mywebsite.sql.gz mywebsite1.tar.gz

正则表达式命令需要从文件名中删除日期(20XX-XX-XX_XX-XX)(每天都会不同)。

感谢您的帮助!

答案1

您必须查看rename命令。它接受正则表达式模式。

用法:

rename [options] [Perl regex search/replace expression] [files]

man rename

-v, --verbose
       Verbose: print names of files successfully renamed.
-n, --no-act
       No Action: show what files would have been renamed.

编辑:

适合您的文件名的正则表达式是_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}。因此,您可以在文件名中找到它,然后将其替换为空,如下所示:

rename -v -n 's/_\d{4}-\d{2}-\d{2}_\d{2}-\d{2}//' *.sql.gz

我没有测试上述命令,但它一定有效。

相关内容