在 Linux 中列出具有最后访问日期的文件

在 Linux 中列出具有最后访问日期的文件

我想清理因我的网站管理员而变得混乱的服务器。

我知道如何使用 find 和 -atime 列出过去 x 天内未访问的所有文件,但我正在寻找的是列出目录中下一级文件的最后访问日期/foo

/foo/bar1.txt Dec 11, 2001
/foo/bar2.txt Nov 12, 2008
/foo/bar3.txt Jan 12, 2004

对于目录中下一级的文件夹/foo,列出目录中最近访问的文件的日期(识别最后访问日期的深度没有限制)

/foo/bar1/ Feb 13, 2012
/foo/bar2/ Oct 11, 2008

其中/foo/bar1/文件修改于 1998 年 1 月 1 日和 2012 年 2 月 13 日,并且/foo/bar2/有 30 个文件,最近一个文件访问于 2008 年 10 月 11 日。

这个问题类似于:https://stackoverflow.com/questions/5566310/how-to-recursively-find-and-list-the-latest-modified-files-in-a-directory-with-s但感兴趣的日期不是修改日期,而是最后访问日期。

答案1

find /foo/* \( -type d ! -name . -prune \) -exec ls -lu {} \;


find /foo/* \( -type d ! -name . -prune \) | 
while read dir
do
    find $dir -type f -exec  stat -c "%X %n %x" {} \; |
          sort -rn | head -1 | awk '{print $2, $3, $4}'
done 

尝试一下。

相关内容