Bash: restituisce il file modificato più recente in una directory specificata

2

Per uno script di bash attualmente in sviluppo, desidero accedere al nome del file modificato più recente (comprese le cartelle ma non le sottodirectory) in una directory specificata. Come posso fare questo?

    
posta David Knaack 11.04.2014 - 18:52
fonte

3 risposte

2

Come suggerito da @fedorqui Puoi fare:

ls -1t | awk '{ print $9; exit}'

Vecchio post:

Puoi ottenerlo usando awk e tail

ls -lrt /path/to/folder/ | tail -1 | awk '{ print $9 }'

    
risposta data 11.04.2014 - 19:50
fonte
1
ls -t /path/to/folder/ | sed -n 1p

-t ordina ls per data modificata. L'output viene convogliato su sed per ottenere la prima riga dell'output.

    
risposta data 11.04.2014 - 18:54
fonte
0

L'analisi di ls è utile nella maggior parte dei casi, ma a volte non è una buona idea .

Per avere una soluzione sicura al 100%, puoi usare il comando find e fargli stampare l'ultima volta che tutti i file sono stati acceduti. Stampandolo in modo numerico, è possibile ordinare l'elenco e stampare l'ultimo.

find /your/path -maxdepth 1 -print0 | xargs -0 stat -c "%Y %n" | sort -n | tail -1 | cut -d' ' -f2-

Spiegazione

  • -maxdepth 1 non approfondisce la struttura delle directory.
  • xargs -0 stat -c "%Y %n" ottiene il nome del file e stampa il suo tempo di ultima modifica più il nome del file. (da man stat : "% Y volta dell'ultima modifica, secondi da Epoch")
  • sort -n ordina l'elenco numericamente, essendo il primo il più vecchio.
  • tail -1 ottiene l'ultimo della lista.
  • cut -d' ' -f2- rimuove la stampa del datetime.
risposta data 11.04.2014 - 21:41
fonte

Leggi altre domande sui tag