Comment utiliser ls
sous linux pour obtenir une liste des noms de fichiers par date et par taille uniquement? Je n'ai pas besoin de voir les autres informations telles que le propriétaire, la permission.
ls -l | awk '{print $5, $6, $7, $9}'
Cela imprimera la taille du fichier en octets, mois, date et nom de fichier.
jin@encrypt /tmp/foo % ls -l
total 0
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 bar
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 baz
drwxr-xr-x 2 jin wheel 68 Oct 4 12:43 quux
jin@encrypt /tmp/foo % ls -l | awk '{print $5, $6, $7, $9}'
68 Oct 4 bar
68 Oct 4 baz
68 Oct 4 quux
Techniquement, ce n'est pas possible avec ls
, mais find
peut faire le même travail avec son commutateur -printf
:
find -maxdepth 1 -printf '%t %s %p\n'
tu peux toujours faire:
$ ls -l
total 0
-rw-r--r-- 1 user staff 0 Oct 6 23:29 file1
-rw-r--r-- 1 user staff 0 Oct 6 23:29 file2
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file3
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file4
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file5
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file6
-rw-r--r-- 1 user staff 0 Oct 6 23:30 file7
cut
il à:
$ ls -l | cut -f 8-13 -d ' '
0 Oct 6 23:29 file1
0 Oct 6 23:29 file2
0 Oct 6 23:30 file3
0 Oct 6 23:30 file4
0 Oct 6 23:30 file5
0 Oct 6 23:30 file6
0 Oct 6 23:30 file7
$
Une autre manière non -ls
:
> stat --printf='%y\t%12s\t%-16n|\n' tmp.*
2017-06-15 10:42:07.252853000 +0200 10485760 tmp.1 |
2017-06-15 10:41:25.659570000 +0200 666 tmp.TKPzm3BfRw |
Explication: %y
= date de modification lisible par l’homme; %s
= taille en octets (%12s
aligné à droite, longueur 12); %n
= nom du fichier (%-16n
aligné à gauche, longueur 16); \t
= tabulation, \n
= saut de ligne. |
= caractère de canal littéral, juste pour afficher la fin du nom du fichier.
Comme ls
, stat
n'a pas d'options pour sélectionner les fichiers à afficher. (Vous pouvez le faire en déplaçant Shell comme indiqué ci-dessus ou par exemple avec find ... -print0 | xargs -r0 stat ...
.)
Légère variation sur tolitius
ls -lh | cut -f 6- -d ' '