【发布时间】:2019-09-19 00:19:59
【问题描述】:
我是 bash 新手,我的任务是删除所有超过 30 天的文件,我可以根据文件名 Y_M_D.ext 2019_04_30.txt 来解决这个问题。
我知道我可以在包含文件的文件夹中列出所有带有ls 的文件。我知道我可以使用$ date 获取今天的日期,并且可以将其配置为匹配文件格式$ date "+%Y_%m_%d"
我知道我可以使用 rm 删除文件。
如何将所有这些结合到一个 bash 脚本中,该脚本删除从今天起超过 30 天的文件?
在伪 python 代码中,我猜它看起来像:
for file in folder:
if file.name to date > 30 day from now:
delete file
【问题讨论】:
-
第一步是将字符串“YYYY_MM_DD.txt”转换为纪元时间。在有纪元时间之前,不要费心尝试比较日期。
-
date --date "2019/04/30" +"%s"和date +"%s"为您提供给定日期和今天的时间戳,您只需转换文件名,然后比较时间戳 -
重复的 stackoverflow.com/questions/49294284/… 有几个额外的解决方案,但没有一个被支持。