Il y a un moyen propre et robuste de sort | head
par date:
Utilisation ls -l
de jolis imprimés
find . ! -type d -printf "%T@ %p\0" |
sort -zrn |
head -zn 10 |
sed -z 's/^[0-9.]\+ //' |
xargs -0 ls -lt
En tant que fonction 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}
}
Cela pourrait être exécuté avec un ou deux arguments, voire sans:
Usage: findByDate [-h] [lines] [find options]
Échantillon:
findByDate
Répertorera tous les non répertoires triés par date Nota:
Même sur un grand système de fichiers, comme la xargs
liste déjà triée est reçue, l'ordre des fichiers reste correct, même s'il ls
doit être exécuté plusieurs fois.
findByDate -h 12
Répertoriera 12 répertoires non récents plus récents triés par date, avec la taille imprimée sous une forme lisible par l'homme
findByDate 42 '-type l'
Fera la liste de 42 liens symboliques plus récents
findByDate -0 '( -type l -o -type b -o -type s -o -type c )'
Dresse la liste de tous les liens symboliques, blocs, sockets et périphériques de caractères, triés par date.
Inverser l'ordre
Remplacement head
par tail
et changer le commutateur de sort
et 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}
}
Même fonction, même usage:
Usage: findByDate [-h] [lines] [find options]