Linux 按修改日期查找和排序文件

Linux 按修改日期查找和排序文件,linux,find,ls,Linux,Find,Ls,我知道这个问题在网上有很多答案。但是,我想知道这个替代解决方案是否有效: ls -lt `find . -name "*.jpg" -print | head -10` 我当然知道这只会给我前10个结果。我询问的原因是,我不确定对于find的每个结果,ls是否单独执行。感谢您的解决方案: 计算find后,将执行ls find很可能会产生太多的结果供ls处理,在这种情况下,您可能需要查看xargs命令 这应该更好地发挥作用: find . -type f -print0 | xargs

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

ls -lt `find . -name "*.jpg" -print | head -10`
我当然知道这只会给我前10个结果。我询问的原因是,我不确定对于
find
的每个结果,
ls
是否单独执行。感谢您的解决方案:

  • 计算
    find
    后,将执行
    ls
  • find
    很可能会产生太多的结果供
    ls
    处理,在这种情况下,您可能需要查看
    xargs
    命令
这应该更好地发挥作用:

  find . -type f -print0 | xargs -0 stat -f"%m %Sm %N" | sort -rn 
此命令的三个部分:

  • 查找所有文件并打印其路径
  • 使用
    xargs
    处理(长)文件列表,并打印出每个文件的修改unixtime、人类可读时间和文件名
  • 按与数字相反的顺序对结果列表进行排序
主要技巧是将上次修改文件时的数值unixtime添加到行的开头,然后对它们进行排序。

在您的解决方案中:

  • 计算
    find
    后,将执行
    ls
  • find
    很可能会产生太多的结果供
    ls
    处理,在这种情况下,您可能需要查看
    xargs
    命令
这应该更好地发挥作用:

  find . -type f -print0 | xargs -0 stat -f"%m %Sm %N" | sort -rn 
此命令的三个部分:

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

主要技巧是将上次修改文件时的数值unixtime添加到行的开头,然后对它们进行排序。

在Unix和Linux交换中有一个类似的问题:我还意识到,将
头放在背景标记中并不能实现我真正想要的功能。在Unix和Linux交换中也有一个类似的问题:我还意识到,将
头放在背景标记中并不能实现我真正想要的功能wantI意识到我上面的命令有问题。你能简要解释一下你的解决方案以及它是如何工作的吗?感谢上面的解释,只是为了确保我理解正确,修改时间是指自文件上次修改以来经过的时间,因此较大的修改时间意味着最近修改的文件,对吗?是指文件上次修改的日期+时间。Unixtime是自1970年1月1日以来以秒表示的时间。(UTC)
-f“%m%Sm%N”
无效。我意识到上面的命令有问题。你能简要解释一下你的解决方案以及它是如何工作的吗?感谢上面的解释,只是为了确保我理解正确,修改时间是指自文件上次修改以来经过的时间,因此较大的修改时间意味着最近修改的文件,对吗?是指文件上次修改的日期+时间。Unixtime是自1970年1月1日以来以秒表示的时间。(UTC)
-f“%m%Sm%N”
无效。