【发布时间】:2011-11-11 05:19:03
【问题描述】:
我有一个要求,我想从ls -latr "some path" 的输出中省略第一行,因为我需要从下面的输出中删除total 136
所以我写了ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -q 排除了第一行,但是当文件夹为空时,它不会省略它。请告诉我如何在任何 linux 命令输出中省略第一行
【问题讨论】:
标签: linux
我有一个要求,我想从ls -latr "some path" 的输出中省略第一行,因为我需要从下面的输出中删除total 136
所以我写了ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -q 排除了第一行,但是当文件夹为空时,它不会省略它。请告诉我如何在任何 linux 命令输出中省略第一行
【问题讨论】:
标签: linux
这是一种快速的 hacky 方式:ls -lart | grep -v ^total。
基本上,删除所有以“total”开头的行,这在ls 输出中应该只是第一行。
一种更通用的方式(适用于任何事物):
ls -lart | sed "1 d"
sed "1 d" 表示只打印除第一行以外的所有内容。
【讨论】:
grep 过滤这个任务通常是危险的;它可能会意外匹配。
将其发送至awk:
awk '{if(NR>1)print}'
或sed
sed -n '1!p'
【讨论】:
sed '1d'
tail 程序可以做到这一点:
ls -lart | tail -n +2
-n +2 的意思是“从输出的第二行开始通过”。
【讨论】:
tail 实现需要-n 标志,如tail -n +2
find . -name . -o -ls -prune,但这会产生一些不同的输出。
coreutils tail 一起工作,但它已被弃用,然后被删除。你现在得到tail: cannot open '+2' for reading: No such file or directory(coreutils 8.7)。可悲的是其他实现不接受-n...
ls -lart | tail -n +2 #argument means starting with line 2
【讨论】:
只需添加到输出中:sed /^total/d
例如:ls -l | sed /^total/d
【讨论】: