以下是我的/ var / www / apache2 / log文件夹中的日志示例 –
./no_domain_access.log.7.gz
./no_domain_access.log.8.gz
./no_domain_access.log.9.gz
./no_domain_error.log.10.gz
./no_domain_error.log.11.gz
./no_domain_error.log.12.gz
./no_domain_error.log.13.gz
./no_domain_error.log.14.gz
./no_domain_error.log.15.gz
./no_domain_error.log.16.gz
./no_domain_error.log.17.gz
./no_domain_error.log.18.gz
./no_domain_error.log.19.gz
./no_domain_error.log.20.gz
直到50 …
我想迭代这些文件并删除大于5的所有日志文件.
使用正则表达式语法将为我提供匹配[1-9]或{1,2}模式中的数字的选项,但这也将匹配我不想删除的日志文件(单个数字1-5日志文件,我希望保持)
如何只匹配数字大于5的文件名?
谢谢!
解决方法:
您可以使用awk one-liner进行此操作:
printf '%sn' *[0-9].gz | awk -F '.' '$(NF-1) >= 5'
这个awk命令使用dot作为字段分隔符,并将$(NF-1)(扩展前的数字字段)与数字5进行比较.
要删除这些文件,请使用:
printf '%sn' *[0-9].gz | awk -F '.' '$(NF-1) >= 5' | xargs rm
xargs从awk和rm命令获取输入只删除那些文件.
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!