![使用正则表达式重命名文件(Linux 命令行)](https://linux22.com/image/1152978/%E4%BD%BF%E7%94%A8%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%E9%87%8D%E5%91%BD%E5%90%8D%E6%96%87%E4%BB%B6%EF%BC%88Linux%20%E5%91%BD%E4%BB%A4%E8%A1%8C%EF%BC%89.png)
我有一个正在创建两个文件的备份脚本:
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
我没有测试上述命令,但它一定有效。