使用 find 命令可以轻松找到在给定时间段内被修改或访问的文件。
当文件被创建时,访问时间与修改时间相同。但是一旦被访问(读取),访问时间就会改变,但修改时间不会改变。
我需要找到所有被访问过的文件,即访问时间比修改时间更新的文件。
我怎么做?
答案1
这应该有效:
find -type f -print0 | xargs -0 -I % find -path % -anewer %
答案2
我认为没有办法使用 GNU find(更不用说 POSIX find)在一次遍历中完成此操作。这是使用 Perl 的简单一行代码File::Find
:
perl -MFile::Find -e 'find({wanted => sub {print "$File::Find::name\n" if -f && -M _ > -A _}}, @ARGV);' .
确保您的文件在安装时没有使用noatime
或relatime
选项 — 最近的 Linux 发行版倾向于默认使用它。