Comment limiter la sortie de ls pour n'afficher que le nom de fichier, la date et la taille?
25
Comment puis-je utiliser lssous linux pour obtenir une liste des noms de fichiers date et taille uniquement? Je n'ai pas besoin de voir les autres informations telles que le propriétaire, la permission.
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
@Sosukudo Ouais, je ne suis pas sûr non plus. Mais les gens semblent convenir qu'il est bon de voter contre les mauvaises questions mais pas les réponses si elles sont utiles. meta.stackexchange.com/questions/98197/…
Jin
@Sosukodo: ne hésitez pas à upvote maintenant :)
sehe
6
pas de prise en charge des noms de fichiers avec plusieurs espaces
meso_2600
12
Techniquement, ce n'est pas possible avec ls, mais findon peut faire le même travail avec son -printfswitch:
Votre suggestion est mon gagnant, et je recommanderais que si les gens sont intéressés par plus de champs pour l'impression, ils RTFM. Par exemple, montrez-moi les autorisations pour tous les fichiers qui ne sont pas un répertoire: find usr/lib/ -not -type d -printf '%M %p\n sortie: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so... Apprenez à un homme à pêcher et tout ça ...
Craig
La question concerne Linux, donc pas de réponse déraisonnable, mais pour mémoire, cela nécessite une recherche GNU.
Dan Pritts
5
vous pouvez 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 à:
$ 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
$
ne fonctionne pas avec: propriétés des variables, groupes, tailles de fichiers
meso_2600
Couper n'effondre pas les délimiteurs consécutifs, où comme ls -lutilise le remplissage des espaces. Si vos colonnes ne sont pas de longueur uniforme (quelle colonne 5, la taille du fichier ne le sera souvent pas), couper ne sélectionnera pas les colonnes correctement. Réduire les espaces consécutifs sera utile (attention aux espaces dans les noms de fichiers). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Explication: %y= date de modification lisible par l'homme;
%s= taille en octets ( %12saligné à droite, longueur 12);
%n= nom du fichier ( %-16naligné à gauche, longueur 16); \t= tab, \n= saut de ligne. |= littéral pipe char, juste pour afficher la fin du nom de fichier.
Comme ls, statn'a aucune option pour sélectionner les fichiers à afficher. (Cela peut être fait en exécutant un globbing comme illustré ci-dessus ou certains find ... -print0 | xargs -r0 stat ..., par exemple.)
La question concernait Linux, donc votre réponse est correcte, mais pour tous ceux qui s'en soucient, voici un équivalent pour FreeBSD stat. stat -f '%N %Sm %z' filename
Réponses:
ls -l | awk '{print $5, $6, $7, $9}'
Cela imprimera la taille du fichier en octets, mois, date et nom de fichier.
la source
Techniquement, ce n'est pas possible avec
ls
, maisfind
on peut faire le même travail avec son-printf
switch:la source
find usr/lib/ -not -type d -printf '%M %p\n
sortie:-rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so
... Apprenez à un homme à pêcher et tout ça ...vous pouvez toujours faire:
cut
à:la source
ls -l
utilise le remplissage des espaces. Si vos colonnes ne sont pas de longueur uniforme (quelle colonne 5, la taille du fichier ne le sera souvent pas), couper ne sélectionnera pas les colonnes correctement. Réduire les espaces consécutifs sera utile (attention aux espaces dans les noms de fichiers).ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Un autre non-
ls
chemin: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
= tab,\n
= saut de ligne.|
= littéral pipe char, juste pour afficher la fin du nom de fichier.Comme
ls
,stat
n'a aucune option pour sélectionner les fichiers à afficher. (Cela peut être fait en exécutant un globbing comme illustré ci-dessus ou certainsfind ... -print0 | xargs -r0 stat ...
, par exemple.)la source
stat -f '%N %Sm %z' filename
Légère variation sur tolitius
la source