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

Respuestas:



261

El tailprograma puede hacer esto:

ls -lart | tail -n +2

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


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


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.


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.