Esiste un modo pulito e robusto sort | head
per data:
Usando ls -l
per la stampa carina
find . ! -type d -printf "%T@ %p\0" |
sort -zrn |
head -zn 10 |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -lt
Come una funzione bash :
findByDate() {
local humansize=''
[ "$1" = "-h" ] && humansize='h' && shift
find . ${2:-! -type d} -printf "%T@ %p\0" |
sort -zrn |
head -zn ${1:--0} |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -dlt${humansize}
}
Questo potrebbe essere eseguito con uno o due argomenti, o anche senza:
Usage: findByDate [-h] [lines] [find options]
Campione:
findByDate
Elencherà tutte le non directory ordinate per data. Nota:
Anche su un grande albero di filesystem, poiché xargs
ricevi già un elenco ordinato, l'ordine dei file rimane corretto, anche se ls
deve essere eseguito più volte.
findByDate -h 12
Elencherà altre 12 directory non recenti ordinate per data, con le dimensioni stampate in forma leggibile dall'uomo
findByDate 42 '-type l'
Elencherà altri 42 link simbolici recenti
findByDate -0 '( -type l -o -type b -o -type s -o -type c )'
Elencherà tutti i collegamenti simbolici, i dispositivi a blocchi, i dispositivi socket e caratteri, ordinati per data.
Inversione dell'ordine
Sostituzione head
di tail
e cambiare interruttore di sort
e ls
:
findByDate() {
local humansize=''
[ "$1" = "-h" ] && humansize='h' && shift
find . ${2:-! -type d} -printf "%T@ %p\0" |
sort -zn |
tail -zn ${1:-+0} |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -dltr${humansize}
}
Stessa funzione, stesso utilizzo:
Usage: findByDate [-h] [lines] [find options]