Come posso elencare (ls) gli ultimi 5 file modificati in una directory?


138

So ls -tche elencherà tutti i file in base all'ora modificata. Ma come posso limitare questi risultati solo agli ultimi n file?


10
Invertire l'ordine ls -lrtpotrebbe aiutare qualcuno.
PJ Brunet,

Lo adoro @PJBrunet. Ho preso l'abitudine di stare sempre con me tharlperché tende ad avere tutto ciò di cui ho bisogno.
Adam Grant,

Risposte:


246

Prova a usare la testa o la coda. Se vuoi i 5 file modificati più di recente:

ls -1t | head -5

Il -1 (che è uno) dice un file per riga e la testa dice prendere le prime 5 voci.

Se vuoi gli ultimi 5 prova

ls -1t | tail -5

2
Se non sbaglio, la shell rappresenta l'output di lsin più colonne, ma l'output di lsviene inviato al seguente comando con 1 file / dir alla volta
Alex

quello sembra essere il caso. Simpatica semplificazione.
Paul Rubel,

3
Ciò ignora il totale in alto:ls -1t | head -n 6 | tail -n 5
Ryan

1
Non vedo un totale, ma se ce n'è uno che funzionerebbe sicuramente.
Paul Rubel,

18

La risposta accettata elenca solo i nomi dei file, ma per ottenere i primi 5 file si può anche usare:

ls -lht | head -6

dove:

-l output in un formato elenco

-h rende l'output leggibile dall'uomo (ovvero le dimensioni dei file appaiono in kb, mb, ecc.)

-t ordina l'output posizionando prima il file modificato più di recente

head -6mostrerà 5 file perché lsstampa la dimensione del blocco nella prima riga di output.

Penso che questo sia un approccio leggermente più elegante e forse più utile.

Esempio di output:

total 26960312 -rw-r--r--@ 1 user staff 1.2K 11 Jan 11:22 phone2.7.py -rw-r--r--@ 1 user staff 2.7M 10 Jan 15:26 03-cookies-1.pdf -rw-r--r--@ 1 user staff 9.2M 9 Jan 16:21 Wk1_sem.pdf -rw-r--r--@ 1 user staff 502K 8 Jan 10:20 lab-01.pdf -rw-rw-rw-@ 1 user staff 2.0M 5 Jan 22:06 0410-1.wmv


12

Usa il tailcomando:

ls -t | tail -n 5

Questo dà il 5 più vecchio. È necessario invertire l'ordinamento ( ls -tr) o utilizzare headanziché tail, per ottenere i 5 più recenti.
Headbank

2

Per impostazione predefinita ls -tordina l'output dal più recente al meno recente, quindi la combinazione di comandi da utilizzare dipende dalla direzione in cui si desidera ordinare l'output.

Per i 5 file più recenti ordinati dal più recente al meno recente, utilizzare headper prendere le prime 5 righe di output:

ls -t | head -n 5

Per i 5 file più recenti ordinati dal più vecchio al più recente, utilizzare l' -rinterruttore per invertire lsil criterio di ordinamento e utilizzare tailper prendere le ultime 5 righe di output:

ls -tr | tail -n 5

1

ls -telenca i file in base all'ora di creazione e non all'ultima modifica. Utilizzare ls -ltcse si desidera elencare i file dall'ultima modifica apportata dall'ultimo al primo (dall'alto verso il basso). Quindi per elencare l'ultimo n:ls -ltc | head ${n}


1
A quale piattaforma / versione ti riferisci? Puoi fornire un collegamento? Guardando la man-page di Linux si ottiene il contrario di ciò che si afferma: -t sort by modification time, newest first
Joma
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.