如何生成按文件修改时间排序的目录中的文件列表 [例如,“/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'