Come visualizzare solo l'ultima riga di un elenco?


12

Suppongo di fare un elenco e ordinare i file in base all'attributo temporale:

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

Cosa devo aggiungere dietro ls -ltr in una catena di tubi per ottenere solo l'ultima riga della lista? So che ci sono sed e awk, ma non so come usarli, so solo cosa possono fare.

Risposte:


25

Dal momento che hai chiesto di sed in particolare,

ls -ltr | sed '$!d'

grazie, ora sono un po 'orgoglioso di aver imparato un po' di sed.
Abdul Al Hazred,

3
Inoltre, sed -n '$p'fa la stessa cosa, ma tail -1è davvero lo strumento giusto per il lavoro.
imiric,

Grazie! Sono riuscito a estrarre l'ultima riga in / proc / cpuinfo e tagliare facilmente lo zero iniziale (usato per estrarre facilmente il numero di serie RPi3):sed '$!d s/.*: 0\+//' /proc/cpuinfo
Yaron

11

Stai cercando tail:

ls -ltr | tail -n 1

Questo mostrerà solo l'ultima riga ls -ltrdell'output. È possibile controllare il numero di righe modificando il valore dopo -n; se ometti del -n 1tutto otterrai dieci righe.


risposta perfetta, molto rapida e utile
Abdul Al Hazred,

tail -1... -nè ridondante.
dhchdhd,

@Barry tail -1è obsoleto (vedere la sezione "RATIONALE" della specifica POSIX pertail , o l'ultima parte del manuale GNUtails ); funziona ancora in questo caso, per ora, ma è meglio evitare di usarlo negli esempi.
Stephen Kitt,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.