我有一个目录树,它有很多分支和树。然而,在顶部节点,只有五个目录,假设为 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
。它是递归的,并按最后修改时间排序。