在我的 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
在文件名前面打印文件的修改时间,并用制表符分隔,其中时间的格式可以简单地按 排序sort
。sort -r
进行反向排序以将最新(即“最大”)时间放在开头。
对于包含换行符的文件名,这会稍微下降。这可以通过不使用\n
但以\0
null 终止文件名来结束 printf 字符串来解决。然后添加--zero-terminated
到排序选项,并放在| tr '\0' '\n'
末尾以将空字节转换回换行符。
答案2
递归列出做
ls -lRrt
如果您想查找所有文件并按日期更改顺序列出它们
ls -lrt `find . -type f`
可能有 10,000 种方法可以做到这一点。