Omitir la primera línea de cualquier salida de comando de Linux

167

Tengo un requisito en el que me gustaría omitir la primera línea de la salida de ls -latr "some path"Dado que necesito eliminar total 136de la salida a continuación

ingrese la descripción de la imagen aquí

Entonces escribí ls -latr /home/kjatin1/DT_901_linux//autoInclude/system | tail -qque excluía la primera línea, pero cuando la carpeta está vacía no la omite. Por favor, dígame cómo omitir la primera línea en cualquier salida de comando de Linux

AabinGunz
fuente

Respuestas:

184

Conéctelo a awk:

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

o sed

sed -n '1!p'
Fredrik Pihl
fuente
21
oawk 'NR>1'
mitchus
24
tambiénsed '1d'
JoL
261

El tailprograma puede hacer esto:

ls -lart | tail -n +2

Los -n +2medios "comienzan a pasar por la segunda línea de salida".

Compañeros de Donal
fuente
1
Tenga en cuenta que algunas tailimplementaciones requieren la -nmarca para eso, como entail -n +2
Mat
También podría usar find . -name . -o -ls -prune, pero eso produce resultados algo diferentes.
Donal Fellows
@Mat: Así parece, aunque funcionó sin cuando lo intenté (en OSX).
Donal Fellows
solía funcionar con coreutilscola, pero ha quedado en desuso y luego se ha eliminado. Ahora obtienes tail: cannot open '+2' for reading: No such file or directory(coreutils 8.7). Lo triste es que otras implementaciones no aceptan -n...
Mat
44
@ Mat: Algunos lo necesitan, otros no lo tomarán. Ugh! Ugh ugh ugh ugh! Eso es asqueroso.
Donal Fellows
23
ls -lart | tail -n +2 #argument means starting with line 2
Jeff Ferland
fuente
20

Esta es una manera rápida hacky: ls -lart | grep -v ^total.

Básicamente, elimine las líneas que comienzan con "total", que en la lssalida solo debería ser la primera línea.

Una forma más general (para cualquier cosa):

ls -lart | sed "1 d"

sed "1 d" significa solo imprimir todo menos la primera línea.

wkl
fuente
3
Usar greppara filtrar esta tarea es peligroso en general; podría coincidir cosas inesperadamente.
Donal Fellows
A veces sí, y creo que no es la mejor solución ... pero ese comando ls siempre genera entradas con los permisos del directorio. No es ideal ya que grep continúa verificando cada línea, y ls se comporta de manera diferente con otras banderas.
Jeff Ferland
1
esto es solo semántica, pero técnicamente significa eliminar la primera línea de la transmisión.
John Morales
mejor espero que no tenga un archivo con el total en su nombre que desea conocer
Amias