Ravi Asked: 2018-08-22 01:27:31 +0800 CST2018-08-22 01:27:31 +0800 CST 2018-08-22 01:27:31 +0800 CST 在带有精简busybox的系统上查找超过x天的文件 772 我需要在开发单元中查找并删除超过 1 周的文件。本机上可用的实用程序数量有限。-mtime find的谓词不可用。在这种情况下,如何检查所有早于 x 天的文件? linux files 2 个回答 Voted Best Answer Stéphane Chazelas 2018-08-22T03:38:20+08:002018-08-22T03:38:20+08:00 -mtime是find(与 相反-delete)的标准谓词,但看起来您有一个精简版本的busybox,其中该FEATURE_FIND_MTIME功能已在构建时被禁用。 如果您可以在启用它的情况下重建busybox,您应该能够: find . -mtime +6 -type f -exec rm -f {} + 或者如果FEATURE_FIND_DELETE也启用: find . -mtime +6 -type f -delete 如果没有,其他选项可能是在设置为具有一周前修改时间的文件上使用find -newer(假设已启用)。FEATURE_FIND_NEWER touch -d "@$(($(date +%s) - 7 * 86400))" ../ref && find . ! -type f -newer ../ref -exec rm -f {} + 或者如果不可-newer用但支持sh:[-nt touch -d "@$(($(date +%s) - 7 * 86400))" ../ref && find . ! -type f -exec sh -c ' for f do [ "$f" -nt ../ref ] || printf "%s\0" "$f" done' sh {} + | xargs -0 rm -f OneK 2018-08-22T01:35:07+08:002018-08-22T01:35:07+08:00 来自man find: -atime n 文件最后一次访问是在 n*24 小时前。当找出最后一次访问文件的时间是多少 24 小时前,任何小数部分都将被忽略,因此要匹配 -atime +1,文件必须至少在两天前被访问过。 -ctime n 文件的状态上次更改是 n*24 小时前。请参阅 -atime 的注释以了解舍入如何影响文件状态更改时间的解释。 根据您要删除的文件的用例,这些是find. 为什么mtime不可用?你用的是什么文件系统?您是否探索过其他选择?
-mtime
是find
(与 相反-delete
)的标准谓词,但看起来您有一个精简版本的busybox
,其中该FEATURE_FIND_MTIME
功能已在构建时被禁用。如果您可以在启用它的情况下重建busybox,您应该能够:
或者如果
FEATURE_FIND_DELETE
也启用:如果没有,其他选项可能是在设置为具有一周前修改时间的文件上使用
find -newer
(假设已启用)。FEATURE_FIND_NEWER
或者如果不可
-newer
用但支持sh
:[
-nt
来自
man find
:根据您要删除的文件的用例,这些是
find
. 为什么mtime
不可用?你用的是什么文件系统?您是否探索过其他选择?