按修改日期查找最新文件

Ric*_*ich 45 command-line find

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

我发现的很多帖子都提出了一些变体ls -lt | head(有趣的是,许多人建议ls -ltr | tail哪个相同但效率较低)这很好,除非您有子目录(我有)。

再说一次,你可以

find . -type f -exec ls -lt \{\} \+ | head
Run Code Online (Sandbox Code Playgroud)

对于一个命令可以指定的尽可能多的文件,这肯定会起作用,即如果您有一个目录,-exec...\+将发出单独的命令;因此,每个组将ls在其内部排序,而不是在整个集合中排序;因此,负责人将拿起第一批的最新条目。

任何答案?

enz*_*tib 58

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

find /path -printf '%T+ %p\n' | sort -r | head
Run Code Online (Sandbox Code Playgroud)

  • 追加`| cut -d ' ' -f2` 仅获取文件名 (4认同)

小智 9

我今天遇到了类似的问题,但我在没有find. 我需要一些简短的东西,我可以跑过去ssh返回我主目录中最近编辑的文件。这大致是我想出的:

ls -tp | grep -v /$ | head -1
Run Code Online (Sandbox Code Playgroud)

向目录添加尾部斜杠的-p选项lsgrep -v删除以斜杠结尾的行(也就是所有目录),并将head -1输出限制为单个文件。

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

  • 这不处理子目录。 (2认同)