我想清理因我的网站管理员而变得混乱的服务器。
我知道如何使用 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
尝试一下。