按文件修改时间降序排列的列表

按文件修改时间降序排列的列表

如何生成按文件修改时间排序的目录中的文件列表 [例如,“/mnt/hdd/PUB/”]?[按降序排列,最早修改的文件位于列表末尾]

ls -A -lRt会很好:https://pastebin.com/raw.php?i=AzuSVmrJ

但是如果目录中的文件发生了更改,它会列出完整的目录,因此 pastebined 链接并不好 [我不想要按“目录”排序的列表,我需要“每个文件”排序的列表]

操作系统:开放Wrt[没有 Perl -> 没有足够的空间 :( + 没有“stat”或“file”命令]。

答案1

使用查找和排序:

find YOUR_START_DIR -type f -print0 |
    xargs -r -0 ls -l | 
        sort -k 6.2,6.5nr \
             -k 6.7,6.8nr \
             -k 6.10,6.11nr \
             -k 7.2,7.3nr \
             -k 7.5,7.6nr

排序后的 k 个选项的长列表将年、月、日、时、分定义为排序键,并按该顺序对它们进行排序。

同一分钟保存的文件不会按顺序排序。如果您想要精确到秒或更长时间,请在 ls 命令中添加“--full-time”,并在 sort 命令末尾添加新键。

答案2

这是一个丑陋的答案,在 cygwin 中对我来说部分有效:

 ls -A -lRt --full-time | sort | uniq | grep -v '^total\|:$'
  • 递归列出文件,显示每个文件的完整时间戳
  • 对它们进行排序
  • 丢弃重复项
  • 找出一些非文件条目,例如“目录 X 中的文件总数”以及您要递归的文件的标题行。

答案3

“更改”目录中的文件可能会更新目录的修改时间。但是,如果您对目录不感兴趣,请将其 grep 出来:

ls -AlRt | egrep -v '^d'

相关内容