我正在尝试删除超过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分钟的文件。
答案 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