如何删除超过X小时的文件

Tom*_*ner 183 bash

我正在编写一个需要删除旧文件的bash脚本.

它目前使用以下方式实现:

find $LOCATION -name $REQUIRED_FILES -type f -mtime +1 -delete
Run Code Online (Sandbox Code Playgroud)

这将删除超过1天的文件.

但是,如果我需要1天更精细的分辨率,比如6个小时呢?有没有一个很好的干净方式来做,就像有使用find和-mtime?

Pau*_*xon 288

find-mmin选择吗?这可以让你测试自上次修改以来的分钟数:

find $LOCATION -name $REQUIRED_FILES -type f -mmin +360 -delete
Run Code Online (Sandbox Code Playgroud)

或者也许看看tmpwatch用来做同样的工作.phjr也在tmpreaper评论中推荐.

  • 感谢大家的答案,-mmin正是我需要的:)不知怎的,我在手册页中错过了它. (6认同)
  • 使用 --mmin +X 返回所有文件和我的发现。我没有先检查这个错误,但是这个命令只是删除了我的大部分主目录。对我来说, --mmin -X 是正确的论点。 (5认同)
  • 我没有-mmin :( (2认同)
  • tmpwatch就是给你的! (2认同)

小智 12

这是对我有用的方法(我没有看到上面使用它)

$ find /path/to/the/folder -name '*.*' -mmin +59 -delete > /dev/null
Run Code Online (Sandbox Code Playgroud)

删除所有早于 59 分钟的文件,同时保持文件夹完好无损。

  • 如果您只想匹配文件,请改用“-type f” (3认同)
  • 最好用单引号 `'*.*'` 或 shell 将其扩展为实际文件名,而不是将其保留为用于解析 `find` 的通配符。这会破坏 `find` 在子目录上的递归操作。 (2认同)
  • 另请记住,“-name '*.*'”不会删除没有扩展名的文件,例如“README”、“Makefile”等。 (2认同)

xto*_*ofl 9

你可以这个技巧:1小时前创建一个文件,然后使用-newer file参数.

(或者用于touch -t创建这样的文件).

  • @iconoclast `touch -t $(date -d '-1 hours' +%Y%m%d%H%M.00) test` 创建始终为 1 小时的文件 `test`。 (3认同)
  • 您还可以执行“-not -newer X”来实现您想要的 (3认同)
  • 是的,我在google中发现了这个技巧,但是-mmin更优雅. (2认同)