L'altro giorno un altro utente Linux mi ha chiesto come trovare il file più vecchio in una directory dalla riga di comando in Linux. Potremmo dire il file più vecchio in una directory usando la data e l'ora in modalità GUI. Ma non so come trovarlo dalla riga di comando. Fortunatamente, ho trovato questa soluzione dopo un po' di ricerche su Google. Se ti sei mai chiesto come trovare il file più vecchio in una directory o nell'intero file system, continua a leggere. Non è così difficile.
Trova il file più vecchio in un albero di directory in Linux
Per trovare il file più vecchio in una directory, ad esempio /home/sk/otechnix/ , esegui:
$ find /home/sk/ostechnix/ -type f -printf '%T+ %p\n' | sort | head -n 1
Analizziamo questo comando e vediamo cosa fa ogni argomento della riga di comando.
Ecco,
- trova - Cerca i file in una gerarchia di directory.
- /home/sk/otechnix/ - Cerca posizione.
- digita -f - Cerca solo i file normali.
- -printf '%T+ %p\n' - Stampa la data e l'ora dell'ultima modifica del file separate da + simbolo. (Es. 22-07-2015+13:42:40.0000000000). Qui, %p indica il nome del file. \n indica una nuova riga.
- ordina | testa -n 1 - Il ordinamento comando ordina l'output e invia l'output a head comando per visualizzare il file più vecchio. Qui, -n 1 indica solo un file, ovvero il file più vecchio.
Come forse già saprai, Explainshell ti aiuta a trovare cosa fa ogni parte di un comando Linux.
Il comando precedente ha restituito il seguente output:
2015-07-22+13:42:40.0000000000 /home/sk/ostechnix/Absolute FreeBSD_ 2nd Edition.pdf
Come puoi vedere nell'output sopra, Absolute FreeBSD_ 2nd Edition.pdf è il file più vecchio in /home/sk/otechnix/ directory.
Tieni presente che Linux non trova il file più vecchio utilizzando la data di creazione del file. Utilizza invece la data di modifica del file per trovarlo.
Scarica - Cheat sheet gratuito:"Cheat sheet di Linux Command Line"Allo stesso modo, per trovare i primi cinque file più vecchi in una determinata directory, esegui semplicemente:
$ find /home/sk/ostechnix/ -type f -printf '%T+ %p\n' | sort | head -n 5
Risultato di esempio:
2015-07-22+13:42:40.0000000000 /home/sk/ostechnix/Absolute FreeBSD_ 2nd Edition.pdf 2016-11-28+21:03:05.0000000000 /home/sk/ostechnix/Etcher-linux-x64.AppImage 2016-12-14+18:28:20.5162190000 /home/sk/ostechnix/ubuntu.jpg 2016-12-18+18:14:46.5931480000 /home/sk/ostechnix/Marconi Union - Sleepless.mp3 2017-03-17+19:28:27.8193330000 /home/sk/ostechnix/The Devops toolkit.pdf
Verrà visualizzato per primo il file più vecchio.
Per trovare il file più vecchio nell'intero file system radice (/), eseguire:
$ sudo find / -type f -printf '%T+ %p\n' | sort | head -n 1
Aggiornamento:
Un altro utente Linux ha indicato come trovare i file più vecchi o più recenti in una directory nella sezione commenti qui sotto. È molto più semplice del mio metodo.
Per scoprire il file più vecchio in una directory, vai in quella directory ed esegui:
$ ls -lt | tail -1
Per scoprire il file più recente in una directory:
$ ls -ltr | tail -1
Spero che questo sia stato utile.