我有一个下面的日志文件谁有日期提到的文件名。我想删除的文件有30天旧的日期在文件名。有人请提供解决方案。
日志文件:-
fortinetPerformanceMet_01_11_2022.log
fortinetTokenGeneration_05_11_2022.log
fortinetTopDestination_10_12_2022.log
fortinetTopSource_11_12_2022.log
我想删除文件名中有30天旧日期的日志文件。删除30天旧文件后,上述文件的预期输出将为
fortinetTopDestination_10_12_2022.log
fortinetTopSource_11_12_2022.log
我试过下面find /path/to/files/ -type f -name "*_*_*_$2022.log" -mtime +30 -delete
,但它会根据文件时间戳删除文件。
2条答案
按热度按时间h43kikqp1#
假设:
date
命令支持-d
选项。dd_mm_yyyy
。那就请你试试:
oldday
会以yyyy_mm_dd
的格式指派给30天前的日期。timestamp
重新排列为yyyy_mm_dd
。>
运算符进行比较。如果输出看起来不错,则删除
echo
。tzcvj98z2#
如果我理解时间戳只在文件名中给出。
dd_mm_yyyy
组件yyyymmdd
yyyymmdd
将其转换为相对于以秒为单位的纪元日期的秒数(使用date +%s
)date +%s
获得今天相对于相同纪元日期的日期(以秒为单位代码如下:
对于示例数据,上述脚本输出: