如何仅显示列表的最后一行?


12

假设我列出了清单,并按其时间属性对文件进行了排序:

ls -ltr

-rwxrwxrwx 1 bla bla 4096 Feb 01 20:10 foo1
-rwxrwxrwx 1 bla bla 4096 Feb 01 20:12 foo2
.
.
.
-rwxrwxrwx 1 bla bla 4096 Mar 05 13:25 foo1000

我应该在管道链中的ls -ltr之后添加什么,以便仅获得清单的最后一行?我知道有sed和awk,但我不知道如何使用它们,我只知道它们可以做什么。

Answers:


25

既然您特别询问过sed,

ls -ltr | sed '$!d'

谢谢,我现在学会了一些具体的sed感到很自豪。
阿卜杜勒·哈兹雷德

3
同样,sed -n '$p'做同样的事情,但实际上tail -1是完成这项工作的正确工具。
相似的

谢谢!我设法提取了/ proc / cpuinfo中的最后一行,并轻松地修剪了前导零(用于轻松提取RPi3序列号):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron

11

您正在寻找tail

ls -ltr | tail -n 1

这只会显示ls -ltr的输出的最后一行。您可以通过更改之后的值来控制行数-n;如果-n 1完全省略,您将得到十行。


完美,快速且实用的答案
Abdul Al Hazred 2015年

tail -1... -n是多余的。
dhchdhd

@Barry tail -1已过时(请参阅POSIX规范tail的“ RATIONALE”部分,或GNU tails手册的最后一部分);目前,它仍然可以在这种情况下使用,但是最好避免在示例中使用它。
斯蒂芬·基特

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.