按修改日期查找最新文件

按修改日期查找最新文件

如果我想在包含子目录的(大)目录中找到最新的文件(mtime),我该怎么做?

我发现很多帖子都建议进行一些变化ls -lt | head(有趣的是,许多帖子建议的ls -ltr | tail方法相同但效率较低),除非你有子目录(我有),否则这很好。

然后,你可以

find . -type f -exec ls -lt \{\} \+ | head

这肯定会对一个命令可以指定的尽可能多的文件起作用,即如果你有一个大的目录,-exec...\+将发出单独的命令;因此每个组将按其ls自身进行排序,但不按整个集合进行排序;因此,头部将选择第一批的最新条目。

有什么答案吗?

答案1

您不需要重复使用外部命令(如ls),因为find可以通过以下操作完成所有需要的-printf操作:

find /path -printf '%T+ %p\n' | sort -r | head

答案2

我今天遇到了类似的问题,但我没有使用 来解决它find。我需要一个简短的方法来ssh返回我主目录中最近编辑的文件。以下是我想到的大致内容:

ls -tp | grep -v /$ | head -1

-p选项用于ls在目录中添加尾部斜杠、grep -v删除以斜杠结尾的行(即所有目录)以及将head -1输出限制为单个文件。

find如果您只想返回文件名,那么这比使用要简洁得多。

答案3

这在我的系统上比 更快printf,但我不明白为什么

find /path -type f -exec stat -c "%y %n" {} + | sort -r | head

答案4

perl与下列物质联合使用find

 find my_directory -type f -printf '%T@\t%p\n' | perl -ane '@m=@F if ($F[0]>$m[0]); END{print $m[1];}'

您将获得具有最大纪元的文件的名称 == 最后修改的文件。

相关内容