Il y a un moyen propre et robuste de sort | headpar date:
Utilisation ls -lde 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 lsdoit ê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 headpar tailet changer le commutateur de sortet 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]