Comment utiliser ls
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 ou la permission. Est-ce possible?
Comment utiliser ls
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 ou la permission. Est-ce possible?
Réponses:
Pourquoi ne pas utiliser stat
au lieu de ls
?
stat -c "%y %s %n" *
find . -type f -print0 | xargs -0 stat -c "%y %s %n"
stat
, vous pouvez ajouter des informations sur la largeur à la chaîne de formatage, comme la fonction C printf, par exemple "%y %8s %n"
, elle n'est pas documentée, mais semble fonctionner (coreutils 8.17, Fedora 18)
ls
je peux le sortir avec un caractère séparateur de mille. Comment ça marche avec stat
?
ls
. Qu'en est-il des couleurs ??
Vous pouvez obtenir beaucoup de contrôle sur la façon dont vous répertoriez les fichiers avec l' find
utilitaire. ls
ne vous laisse pas vraiment spécifier les colonnes que vous voulez.
Par exemple:
$ find . -maxdepth 1 -printf '%CY%Cm%Cd.%CH%CM\t%s\t%f\n'
20111007.0601 4096 .
20111007.0601 2 b
20111001.1322 4096 a
L'argument de l' printf
action est détaillé dans la page de manuel. Vous pouvez choisir différentes informations temporelles, la taille souhaitée (taille du fichier ou des blocs de disque utilisés), etc. Vous pouvez également sécuriser cette option pour les noms de fichiers inhabituels si un traitement supplémentaire est nécessaire.
%C+
(sortie "2016-08-29 + 10: 57: 56.9201257840") et %Cc
(sortie "Mo 29 août 2016 10:57:56 CEST")
Vous pouvez toujours utiliser un autre utilitaire comme awk
pour formater la sortie de ls
1 :
/bin/ls -ls | awk '{print $7,$8,$9}'
1.Oui, en règle générale, vous ne devriez pas analyser la sortie de ls, mais dans ce cas, la question le demande spécifiquement ...
ls
est aliasé (par exemple alias ls='ls -i'
). Vous devez vraiment faire très attention si vous voulez analyser les résultats de ls.
ls
, mais c’est ce que le PO voulait ...
/bin/ls
éviterait le problème d'alias.)
ls
laquelle nous sommes tous les deux d’accord, ne va pas satisfaire aux exigences relatives aux espaces. La /bin/ls
suggestion est bonne.
-h
pour la rendre lisible par l'homme. Plus précisément je: ce ls -lah | awk '{print $5,$6,$7,$8}'
qui donne: 4.0K Jan 24 18:17
. Certes, la solution d'origine ne dit rien sur awk, mais sous Linux, nous devrions supposer que la sortie d'un processus sera toujours l'entrée d'un autre processus, n'est-ce pas? ;)
Vous pouvez également utiliser la commande 'date'. C'est très facile à utiliser:
date -r [nom du fichier]
date -r foo*.txt
->date: extra operand "foo2.txt"
où l'espace est défini comme le séparateur et f6 le champ 6
ls -lt | cut -d" " -f6-
Vous pouvez pipeline deux commandes
ls -l|cut -d" " -f5
ls
est génial parce que le tri par date / heure est très rapide, mais le formatage est difficile à gérer. Je suggère d'utiliser un jeton dans le style --time comme--time-style='+&%Y%m%d+%H%M%S.%N'
où le jeton est '&', en utilisant cette référence comme référence, vous pouvez analyser davantage la sortiesed
afin que vous puissiez également effectuer un retour en arrière, juste avant la taille du jeton! Si quelqu'un veut poster cela comme réponse complète, n'hésitez pas, je suis trop endormi maintenant :)