7 天不工作后删除文件
Deleting files after 7 days not working
我正在尝试删除所有超过 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 分钟后找到命令。它首先删除日期为 10 月 30 日且时间为 3 分钟后的文件 运行。
这不是准确的答案,但您可以尝试将其作为示例。
find /path/to/ -type f -mtime +7 -name '*.gz' -execdir rm -- '{}' \;
或者另一种更快的命令是使用 exec 的 + 终止符而不是 \;:
find /path/to/ -type f -mtime +7 -name '*.gz' -execdir rm -- '{}' +
或
find /path/to/ -type f -mtime +7 -name '*.gz' -delete
- find:用于查找 files/directories/links 等的 unix 命令。
/path/to/:开始搜索的目录。
-type f: 只查找文件。
-name '*.gz': 列出以 .gz 结尾的文件。
-mtime +7:只考虑修改时间大于7天的。 -execdir ... \;: 对于找到的每个这样的结果,执行
rm 中的以下命令 -- '{}': 删除文件; {} 部分是
查找结果被替换为前一部分的位置。
-- 表示命令参数结束,避免以连字符 开头的文件提示错误
.
来自man find
:
-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.
这意味着您的命令实际上删除了 8 天或更多天前访问过的文件。
因为现在是
$ date
Tue Nov 7 10:29:29 PST 2017
find
要求文件早于:
$ date -d 'now - 8 days'
Mon Oct 30 11:29:05 PDT 2017
换句话说,保留 10 月 30 日后的一些文件是预期的行为并记录在案。
要考虑 find
向下舍入,只需使用 -mtime +6
即可。
我正在尝试删除所有超过 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 分钟后找到命令。它首先删除日期为 10 月 30 日且时间为 3 分钟后的文件 运行。
这不是准确的答案,但您可以尝试将其作为示例。
find /path/to/ -type f -mtime +7 -name '*.gz' -execdir rm -- '{}' \;
或者另一种更快的命令是使用 exec 的 + 终止符而不是 \;:
find /path/to/ -type f -mtime +7 -name '*.gz' -execdir rm -- '{}' + 或
find /path/to/ -type f -mtime +7 -name '*.gz' -delete
- find:用于查找 files/directories/links 等的 unix 命令。
/path/to/:开始搜索的目录。
-type f: 只查找文件。
-name '*.gz': 列出以 .gz 结尾的文件。
-mtime +7:只考虑修改时间大于7天的。 -execdir ... \;: 对于找到的每个这样的结果,执行 rm 中的以下命令 -- '{}': 删除文件; {} 部分是 查找结果被替换为前一部分的位置。 -- 表示命令参数结束,避免以连字符 开头的文件提示错误
.
来自man find
:
-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.
这意味着您的命令实际上删除了 8 天或更多天前访问过的文件。
因为现在是
$ date
Tue Nov 7 10:29:29 PST 2017
find
要求文件早于:
$ date -d 'now - 8 days'
Mon Oct 30 11:29:05 PDT 2017
换句话说,保留 10 月 30 日后的一些文件是预期的行为并记录在案。
要考虑 find
向下舍入,只需使用 -mtime +6
即可。