如何通过打印最近 10 个最新更新文件来对查找输出进行排序?

如何通过打印最近 10 个最新更新文件来对查找输出进行排序?

在我的 Linux 机器上,我想知道用户最近编辑了哪些文件

假设我想在/home最近编辑的最多 10 个文件下递归搜索

如何使用 find 命令或其他解决方案执行该操作?

预期输出示例:

27/6/2018 11:23 /home/my_data/file
27/6/2018 10:21 /home/top/oo/pp/file
27/6/2018 09:23 /home/my_data/GG/file

答案1

查找当前目录下最新的10个文件:

find -type f -printf "%TY-%Tm-%Td %TH:%TM:%TS\t%h/%f\n" | sort -r | head -n 10

可以选择添加| cut -f2以去除时间信息。

这使用-printf选项find在文件名前面打印文件的修改时间,并用制表符分隔,其中时间的格式可以简单地按 排序sortsort -r进行反向排序以将最新(即“最大”)时间放在开头。

对于包含换行符的文件名,这会稍微下降。这可以通过不使用\n但以\0null 终止文件名来结束 printf 字符串来解决。然后添加--zero-terminated到排序选项,并放在| tr '\0' '\n'末尾以将空字节转换回换行符。

答案2

递归列出做

ls -lRrt

如果您想查找所有文件并按日期更改顺序列出它们

ls -lrt `find . -type f`

可能有 10,000 种方法可以做到这一点。

相关内容