我有一个正在创建两个文件的备份脚本:
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
我没有测试上述命令,但它一定有效。