如何通过OS X中的修改日期命令行'find'找到找到的文件?


10

使用Mac OS X终端,我该如何编写 find 命令按修改日期(最近的第一个)订购结果?

还有类似的问题,但它们指的是GNU find 和POSIX,但我不知道Mac OS X是GNU还是POSIX或其他东西。

Answers:


12

OS X是完全的 POSIX 兼容。

这样的事情应该做:

find . -type f -name "*.txt" -print0 | xargs -0 ls -tl

一些说明:

  • -t 选项 ls 将排序 mtime
  • xargs 用于将文件名作为参数传递给 ls。请注意,您必须使用 -print0find-0xargs 如果你的名字中有空格的文件。此外,参数的最大数量是 受到限制 ARG_MAX 变量 。要了解这些是多少,请输入 getconf ARG_MAX
  • 你可以提供 -r 反转排序顺序(→最早的文件)
  • 另一个 findls 选项如 - 通常 - 在手册中概述( man find 要么 man ls )。

ls -ltr 扭转秩序。
Daniel Beck

Xe'll只会将它们分组(略小于) ARG_MAX 文件名字符,当然。
JdeBP

是的,感谢@JdeBP和Daniel的加入。 getconf ARG_MAX 将显示该数字。
slhck

啊,我的问题现在是我在AppleScript中使用这个命令,并使用结果来读取该文件的内容。但现在结果包含日期信息,而不仅仅是文件名:do shell脚本“find / Users / akw / Library / Preferences / ByHost / -name'com.apple.windowserver *' - print0 | xargs -0 ls -tl | head -1“返回此 - > “-rw ------- @ 1 akw staff 5512 Jun 19 07:52 /Users/akw/Library/Preferences/ByHost//com.apple.windowserver.1FC3A841-2C0C-5F48-B746-1DEE064F6D12.plist”
zadam

@zadam然后使用 ls -t 代替 ls -tl。该 -l 给你一个很长的列表,包括日期。我不知道你到底想要做什么,对不起 - 我以为你想看看 mtime 同样。
slhck
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.