Omitindo a primeira linha de qualquer saída de comando do Linux

167

Eu tenho um requisito no qual gostaria de omitir a primeira linha da saída de ls -latr "some path"Since I need to remove total 136from the below output

insira a descrição da imagem aqui

Então eu escrevi ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -qque excluía a 1ª linha, mas quando a pasta está vazia, ela não é omitida. Por favor, diga-me como omitir a primeira linha em qualquer saída do comando linux

AabinGunz
fonte

Respostas:

184

Canalize-o para awk:

awk '{if(NR>1)print}'

ou sed

sed -n '1!p'
Fredrik Pihl
fonte
21
ouawk 'NR>1'
mitchus
24
tambémsed '1d'
JoL
260

O tailprograma pode fazer isso:

ls -lart | tail -n +2

Os -n +2meios "começam a passar na segunda linha de saída".

Donal Fellows
fonte
1
Observe que algumas tailimplementações exigem a -nsinalização para isso, como emtail -n +2
Mat
Você também pode usar find . -name . -o -ls -prune, mas isso produz resultados um pouco diferentes.
Donal Fellows
@ Mat: Parece que, embora funcionasse sem quando eu tentei (no OSX).
Donal Fellows
costumava trabalhar com coreutilscauda, ​​mas foi preterido e removido. Agora você recebe tail: cannot open '+2' for reading: No such file or directory(coreutils 8.7). Triste é outras implementações não aceitam -n...
Mat
4
@ Mat: Alguns precisam, outros não aceitam? Ugh! Ugh ugh ugh ugh! Isso é nojento.
Donal Fellows
23
ls -lart | tail -n +2 #argument means starting with line 2
Jeff Ferland
fonte
20

Esta é uma maneira hacky rápida: ls -lart | grep -v ^total.

Basicamente, remova todas as linhas que começam com "total", que na lssaída devem ser apenas a primeira linha.

Uma maneira mais geral (para qualquer coisa):

ls -lart | sed "1 d"

sed "1 d" significa apenas imprimir tudo, exceto a primeira linha.

wkl
fonte
3
Usar o grepfiltro para esta tarefa é perigoso em geral; poderia combinar as coisas inesperadamente.
Donal Fellows
Às vezes sim, e acho que não é a melhor solução ... mas esse comando ls sempre leva entradas com as permissões de diretório. Não é o ideal, pois o grep continua verificando cada linha e se comporta de maneira diferente com outros sinalizadores.
Jeff Ferland
1
isso é apenas semântica, mas tecnicamente significa excluir a primeira linha do fluxo.
John Morales
melhor esperar que você não tem arquivo i com um total em seu nome que você quer saber sobre
Amias