Unix:包括最后修改时间的目录列表

Unix:包括最后修改时间的目录列表

我有一个目录树,它有很多分支和树。然而,在顶部节点,只有五个目录,假设为 AE。在目录树中,文件正在随机更新。

我希望能够获得目录列表(也就是说,像ls)最后修改文件时间,其中包括全部该目录中的子目录和文件。所以我最终会得到这样的结果:

A 6月12日 08:00 B 6月13日 08:00 C 6月14日 08:00 D 6月15日 08:00 E 6月16日 08:00

我曾尝试过各种变体ls -t,但似乎没有将子目录考虑在内。

还有类似的东西find . -type f | xargs ls -tr,但我看不到使用它来获取我想要的输出的方法(注意:我的 Unix 知识非常有限,你可能已经看出来)。

答案1

这可能就是您正在寻找的:

#!/bin/bash
for dir in A B C D E
do
    file=$dir
    while [[ -n $file ]]
    do
        prev=$file
        file=$(find $dir -newer $file -type f -print -quit)
    done
    mod=$(stat --format=%Y "$prev")
    echo "$dir $(date --date=@$mod '+%d %b %T')"
done

答案2

使用ls -clRt。它是递归的,并按最后修改时间排序。

相关内容