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?
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?
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 }'
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.
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-
-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.