【问题标题】:LS - sort by date, display only file nameLS - 按日期排序,只显示文件名
【发布时间】:2019-05-17 17:24:02
【问题描述】:

我正在尝试列出一些文件,但我只想要文件名,按文件日期顺序排列。我已经尝试了一些命令,但它们都不起作用。

我知道使用此代码我只能列出文件名:

ls -f *

而且我知道使用这个命令我可以列出按日期排序的文件:

ls -ltr *

所以我尝试使用此命令仅列出文件名,按文件日期排序,但它不按日期排序:

ls -ltr -f *

最后一个命令只是列出文件名,但按文件名排序,而不是日期。

有什么想法可以用一个简单的 ls 命令来做到这一点吗?

仅供参考,一旦我完成这项工作,我的最终目标是只列出最近创建的 10 个文件名,使用如下内容:

ls -ltr -f * | tail -10

【问题讨论】:

  • 什么,ls -tr -f * 不起作用?祝你好运。
  • 没有。 ls -tr -f * 不起作用。
  • 所以基于下面的man page 引用,-f 不对文件进行排序。 ls -tr * 按日期排序和显示文件怎么样。很高兴您找到了解决方案。
  • 下次请在unix.stackexchange.com询问

标签: unix ls


【解决方案1】:

你可以试试下面的命令:

ls -ltr | awk '{ print $9 }' | tail -n +2

它从 ls -ltr 命令中提取文件名。

【讨论】:

  • 这很完美。谢谢!仍然不明白为什么-ltr -f 不起作用,但是,至少这是一个解决方案。
【解决方案2】:

根据ls 的手册,-f 标志用于,

       -f     do not sort, enable -aU, disable -ls --color

仅提取文件的一种方法是,

ls -p | grep -v /

-p 选项用于在目录名称后附加一个'/',我们可以grep 用于不包含'/'的行。

要提取 10 个最近使用的文件,您可以执行以下操作

ls -ptr * | grep -v / | tail -10

【讨论】:

  • 那行不通。它显示整个列表,而不仅仅是文件名。
  • 在这种情况下,您可以放弃-l 选项。我已经更新了答案以显示相同。
猜你喜欢
  • 2015-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 2015-08-10
  • 2010-10-27
相关资源
最近更新 更多