如何按上次修改日期对“ls”的输出进行排序?

1557 linux unix shell ls

如何ls按上次修改日期对输出进行排序?

小智 1875

ls -t
Run Code Online (Sandbox Code Playgroud)

或(反向,最近在底部):

ls -tr
Run Code Online (Sandbox Code Playgroud)

ls手册页描述得更详细信息,并列出了其他选项。

  • `ls -halt` 用于 `human readable`、`show hidden`、`print details`、`sort by date`。 (359认同)
  • @EvgeniSergeev 不要记住 `ls -halt` 一个简单的错误类型可能会导致您的服务器崩溃!https://linux.die.net/man/8/halt (10认同)
  • 如果有人想知道,`-t` 和 `-r` 参数都在 [POSIX 标准中关于 `ls` 的部分](http://pubs.opengroup.org/onlinepubs/9699919799/utilities/ls) 中指定.html),所以应该在 Unices 之间兼容。 (9认同)
  • `ls -llt` 用于显示日期时间戳和排序 (9认同)
  • 对的,这是可能的 (5认同)
  • @Isaac 如果你输错了 ls -halt 你仍然只是在运行 ls .... (4认同)
  • 是的,因为_没有人_会以 root 身份运行...... (3认同)
  • 除非你把它误输入为“ls;halt” (2认同)

小智 168

试试这个:ls -ltr。它会给你最近到列表的末尾


Dej*_*jan 52

对于完整的答案,这是我使用的: ls -lrth

把它放在你的启动脚本中/etc/bashrc并分配一个这样的别名:alias l='ls -lrth'重新启动你的终端,你应该能够输入l并查看一长串文件。

  • 如果你想在运行时将它添加到你的曲目中,你也可以调用 `source /etc/bashrc`。 (14认同)

F. *_*uri 35

我有时使用这个:

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -tr
Run Code Online (Sandbox Code Playgroud)

或者

find . -type f -mmin -5 -print0 | xargs -0 /bin/ls -ltr
Run Code Online (Sandbox Code Playgroud)

递归哪些文件在最后5分钟被修改。

...或者现在,使用最新版本的GNU find

find . -type f -mmin -5 -exec ls -ltr {} +
Run Code Online (Sandbox Code Playgroud)

...甚至不限于文件

find . -mmin -5 -exec ls -ltrd {} +
Run Code Online (Sandbox Code Playgroud)

(注意-d切换到ls不显示目录内容)

更健壮的方式?

看看我的 anser 以查找并按修改日期排序


小智 23

添加:

alias lt='ls -Alhtr'
Run Code Online (Sandbox Code Playgroud)

$homedir/.bashrc


sim*_*eco 22

助记符

因为不要忽略以日期开头.并按日期排序的条目(最新的在前):

ls -at
Run Code Online (Sandbox Code Playgroud)

对于不要忽略开头的条目.按日期排序逆转(最早的在前):

ls -art
Run Code Online (Sandbox Code Playgroud)

对于不要忽略以 开头的条目.,请使用长列表格式并按日期排序(最新的在前):

ls -alt
Run Code Online (Sandbox Code Playgroud)

对于打印人类可读的尺寸,不要忽略以 开头的条目.,使用长列表格式并按日期排序(最新的优先)(@EvgeniSergeev 注释):

ls -halt
Run Code Online (Sandbox Code Playgroud)

要小心最后一个,因为一个简单的错误输入可能会导致服务器崩溃......(@Isaac 注释)


pbi*_*ies 16

查找文件系统上最多 3 * 24 小时(3 天)前至今修改过的所有文件:

find / -ctime 3
Run Code Online (Sandbox Code Playgroud)


lfe*_*445 13

要显示按日期排序的 10 个最近的,我使用如下内容:

ls -t ~/Downloads | head -10
Run Code Online (Sandbox Code Playgroud)

或显示最旧

ls -tr ~/Downloads | tail -10
Run Code Online (Sandbox Code Playgroud)


bba*_*ker 10

仅使用非常基本的 Unix 命令:

ls -nl | sort -k 8,8n -k 6,6M
Run Code Online (Sandbox Code Playgroud)

这适用于 Linux;第 8 列是“n”(数字),第 6 列是“M”,月份。

我是新来的sort,所以这个答案可能会得到改进。更何况,它需要更多的选择,lssort使用准确的时间戳,但不是每个人都需要这个。

  • 我怀疑你的答案没有得到任何赞成,因为它解析了 ls 的输出 - 请参阅[反对这样做的规范论点](http://mywiki.wooledge.org/ParsingLs) 和 [关于不解析 ls 的问题](http://unix.stackexchange.com/questions/128985/why-not-parse-ls) (6认同)

Ale*_*vić 6

显示最近 10 个修改的文件的一种可能方法是使用以下命令:

ls -lrth | tail -n 10
Run Code Online (Sandbox Code Playgroud)

上述命令说明:

ls - list
Run Code Online (Sandbox Code Playgroud)

论点:

l - long
r - reverse
t - sort by time
h - human readable
Run Code Online (Sandbox Code Playgroud)

然后它通过管道传输到tail命令,该命令仅显示最近的 10 行,由n参数(行数)定义...