7天后无法删除文件

时间:2017-11-07 18:20:01

标签: linux command-line filesystems rm system-administration

我正在尝试删除超过7天的所有文件。该命令正在运行,但不正确。

 find '/files/tem_data/' -mtime +7 -exec rm -rf {} \+

它会删除文件,但不准确。

ls -Artl | head -n 2

find会删除文件,但是当我运行时,ls命令确实包含应该删除的文件。例如今天是11月7日。该查找应在11月1日之前删除所有文件。它不是。该命令将保留10月30日和31日的文件。如何删除超过7天的文件。

如果我在3分钟后运行find命令。它删除日期为10月30日的文件和第一次运行后3分钟的文件。

2 个答案:

答案 0 :(得分:1)

来自-atime n File was last accessed n*24 hours ago. When find figures out how many 24-hour periods ago the file was last accessed, any fractional part is ignored, so to match -atime +1, a file has to have been accessed at least two days ago.

$ date
Tue Nov  7 10:29:29 PST 2017

这意味着您的命令实际上删除了8天或更多天前访问过的文件。

现在是时候了

find

$ date -d 'now - 8 days' Mon Oct 30 11:29:05 PDT 2017 要求文件必须早于:

find

换句话说,从10月30日开始留下一些文件是预期和记录的行为。

要考虑-mtime +6四舍五入,只需改为使用aws cloudsearchdomain --endpoint-url https://search-mydomain.us-east-1.cloudsearch.amazonaws.com search --search-query '1|2|3' --query-options='{"fields":["category_id"]}'

答案 1 :(得分:0)

这不是确切的答案,但您可以尝试将其作为样本。 find /path/to/ -type f -mtime +7 -name '*.gz' -execdir rm -- '{}' \;

或者替代而且更快的命令是使用exec' s +终结符而不是\;:

find / path / to / -type f -mtime +7 -name' * .gz' -execdir rm - ' {}' + 或

find /path/to/ -type f -mtime +7 -name '*.gz' -delete
  • find:用于查找文件/目录/链接等的unix命令。 / path / to /:开始搜索的目录。
    -type f:只查找文件 -name' * .gz':列出以.gz结尾的文件。
    -mtime +7:仅考虑修改时间超过7天的那些。 -execdir ... \ ;:找到每个这样的结果,做 rm中的以下命令 - ' {}':删除文件; {}部分是 将查找结果替换为上一部分的位置。 - 表示命令参数结束,避免对以连字符开头的文件提示错误