【问题标题】:Find and sort files by date modified按修改日期查找和排序文件
【发布时间】:2016-04-01 03:38:09
【问题描述】:

我知道这个问题网上有很多答案。但是,我想知道这种替代解决方案是否可行:

ls -lt `find . -name "*.jpg" -print | head -10`

我当然知道这只会给我前 10 个结果。我问的原因是因为我不确定ls 是否针对find 的每个结果单独执行。谢谢

【问题讨论】:

标签: linux find ls


【解决方案1】:

在您的解决方案中:

  • ls 将在 find 评估后执行
  • find 可能会产生太多结果,ls 无法处理,在这种情况下,您可能需要查看xargs 命令

这应该会更好:

  find . -type f -print0 | xargs -0 stat -f"%m %Sm %N" | sort -rn 

这三个部分的命令:

  • 找到所有文件并打印它们的路径
  • 使用xargs 处理(长)文件列表并打印出修改unixtime、人类可读时间和每个文件的文件名
  • 以相反的数字顺序对结果列表进行排序

主要技巧是将文件最后一次修改时的数字 unixtime 添加到行首,然后对它们进行排序。

【讨论】:

  • 我意识到我上面的命令有问题。您能否简要解释一下您的解决方案及其工作原理?谢谢
  • 见上面的解释
  • 只是为了确保我理解正确,修改时间是从纪元到最后修改文件的时间,所以较大的修改时间意味着最近修改的文件,对吗?跨度>
  • 这是文件最后修改的日期+时间。 Unixtime 是自 1970 年 1 月 1 日以来以秒为单位的时间。(UTC)
  • -f"%m %Sm %N" 无效。
猜你喜欢
  • 1970-01-01
  • 2012-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-07
  • 2017-01-02
相关资源
最近更新 更多