Questa è una versione ricorsiva (ovvero trova il file aggiornato più di recente in una determinata directory o in una qualsiasi delle sue sottodirectory)
find /dir/path -type f -printf "%example@unixlinux.online %p\n" | sort -n | cut -d' ' -f 2- | tail -n 1
Breve spiegazione per i profani della riga di comando:
find /dir/path -type ftrova tutti i file nella directory-printf "%example@unixlinux.online %p\n"stampa una riga per ogni file dove%example@unixlinux.onlineè il float secondi dall'epoca 1970 e%pè il percorso del nome file e\nè il carattere di nuova riga- per maggiori informazioni vedi
man find
|è una shellpipe(vediman bashsezione suPipelines)sort -nsignifica ordinare sulla prima colonna e trattare il token come numerico invece che lessicografico (vediman sort)cut -d' ' -f 2-significa dividere ogni riga usando ilcarattere e poi per stampare tutti i token a partire dal secondo token (vediman cut)- NOTA:
-f 2stamperebbe solo il secondo token
- NOTA:
tail -n 1significa stampare l'ultima riga (vediman tail)
ls -Art | tail -n 1
Ciò restituirà l'ultimo file o directory modificato. Non molto elegante, ma funziona.
Flag utilizzati:
-A elenca tutti i file tranne . e ..
-r ordine inverso durante l'ordinamento
-t ordina per ora, prima i più recenti
ls -t | head -n1
Questo comando fornisce effettivamente l'ultimo file o directory modificato nella directory di lavoro corrente.