¿Cómo mostrar solo la última línea de un listado?

12

Supongamos que hago una lista y clasifico los archivos por su atributo temporal:

ls -ltr

-rwxrwxrwx 1 bla bla 4096 Feb 01 20:10 foo1
-rwxrwxrwx 1 bla bla 4096 Feb 01 20:12 foo2
.
.
.
-rwxrwxrwx 1 bla bla 4096 Mar 05 13:25 foo1000

¿Qué debo agregar detrás de ls -ltr en una cadena de tuberías para obtener solo la última línea de la lista? Sé que hay sed y awk, pero no sé cómo usarlos, solo sé lo que pueden hacer.

Abdul Al Hazred
fuente

Respuestas:

25

Como preguntaste sobre sed específicamente,

ls -ltr | sed '$!d'
conductor de acero
fuente
gracias, ahora estoy un poco orgulloso de haber aprendido algo de concreto.
Abdul Al Hazred
3
Además, sed -n '$p'hace lo mismo, pero realmente tail -1es la herramienta adecuada para el trabajo.
imiric
¡Gracias! Logré extraer la última línea en / proc / cpuinfo y recortar el cero inicial con facilidad (utilizado para extraer el número de serie RPi3 con facilidad):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron
11

Estas buscando tail:

ls -ltr | tail -n 1

Esto mostrará solo la última línea de ls -ltrsalida. Puede controlar el número de líneas cambiando el valor después -n; Si omite por -n 1completo, obtendrá diez líneas.

Stephen Kitt
fuente
respuesta perfecta, muy rápida y útil
Abdul Al Hazred
tail -1... -nes redundante.
dhchdhd
@Barry tail -1está en desuso (consulte la sección "JUSTIFICACIÓN" de la especificación POSIXtail o la última parte del manual de GNUtails ); todavía funciona en este caso, por ahora, pero es mejor evitar usarlo en ejemplos.
Stephen Kitt
5

Con awk:

ls -ltr | awk 'END { print }'
taliezin
fuente