从任何Linux命令输出中省略第一行


167

我有一个需要从输出中省略第一行的要求,ls -latr "some path"因为我需要total 136从以下输出中删除

在此处输入图片说明

所以我写ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -q了排除第一行的内容,但是当文件夹为空时,它不会被忽略。请告诉我如何在任何Linux命令输出中省略第一行

Answers:



260

tail程序可以做到这一点:

ls -lart | tail -n +2

-n +2装置“开始穿过上输出的第二行”。


1
请注意,某些tail实现需要-n为此设置标志,例如tail -n +2
Mat

您也可以使用find . -name . -o -ls -prune,但这会产生一些不同的输出。
Donal Fellows

@Mat:看来,尽管它在我尝试(在OSX上)时没有工作。
Donal Fellows

它曾经与coreutils尾巴一起使用,但已被弃用,然后移除。您现在得到tail: cannot open '+2' for reading: No such file or directory(coreutils 8.7)。可悲的是,其他实现不接受-n...
Mat Mat

4
@Mat:有些需要它,有些则不会?啊! gh,!真恶心
Donal Fellows


20

这是一种快捷的方法:ls -lart | grep -v ^total

基本上,删除所有以“ total”开头的行,该行在ls输出中应该仅是第一行。

一种更通用的方法(适用于任何事物):

ls -lart | sed "1 d"

sed "1 d" 表示只打印第一行以外的所有内容。


3
grep通常,使用过滤器来完成此任务很危险;它可能会意外地匹配事物。
Donal Fellows

有时候是的,我认为这不是最好的解决方案……但是ls命令总是引导具有目录权限的条目。这是不理想的,因为grep继续检查每一行,并且ls与其他标志的行为不同。
杰夫·弗兰

1
这只是语义,但从技术上讲,这意味着从流中删除第一行。
约翰·莫拉莱斯

更好的希望是您没有要知道的全名文件
Amias
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.