假设我列出了一个列表并按文件的时间属性对文件进行排序:
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,但我不知道如何使用它们,我只知道它们能做什么。
答案1
既然您具体询问了 sed,
ls -ltr | sed '$!d'
答案2
您正在寻找tail
:
ls -ltr | tail -n 1
ls -ltr
这将仅显示 的输出的最后一行。您可以通过更改后面的值来控制行数-n
;如果完全省略,-n 1
您将得到十行。
tail
使用代替的好处sed
是从tail
文件末尾开始直到到达换行符,而sed
必须遍历整个文件直到到达末尾,然后才返回自找到最后一个换行符以来的文本。
答案3
使用 awk:
ls -ltr | awk 'END { print }'