删除最新修改文件超过 X 天的文件

删除最新修改文件超过 X 天的文件

是否有任何解决方案可以根据修改日期与最近修改的文件进行比较来删除文件?需要相对于最新文件删除较旧的文件。

例如,如果最后修改日期是 09-10-2017,则意味着需要删除 10 天前的文件。修改日期更改时同样;要删除的文件应相应更改。

答案1

使用 GNU 工具:

find . -type f -printf '%T@:%p\0' |
  sort -rzn |
  awk -v RS='\0' -v ORS='\0' -F: -v d=10 '
    NR == 1 {t = $1 - 86400 * d}
    $1 < t, 0 {sub(/[^:]*:/, ""); print}' |
  xargs -r0 echo rm

(快乐时去掉echo)。

我们将find打印123456.123:./path/to/file<NUL>每个文件(123456.123文件的最后修改时间)。

我们按数字排序(因此最新的文件排在前面),然后用于awk查找比最新文件早 10 天的文件(在排序列表的第一条记录中找到)。

答案2

我觉得如果您使用的是基于 Linux 的操作系统,下面的命令会对您有所帮助。

find /path/to/directory/ -mindepth 1 -mtime +7 -delete

+7 = 变量,这意味着超过 7 天的文件将被删除

请注意 rm 中的空格和引号。

相关内容