#1 Le 10/10/2012, à 17:02
- jejeman
ls taille et nom de fichier
Bonjour,
J'arrive pas à faire ce que je veux avec le ls, du coup j'en viens ici implorer votre aide....
je veux faire un ls -Rl mais je veux que le nom du fichier et sa taille
Comment faire ?
Merci.
Jérôme ;)
Hors ligne
#2 Le 10/10/2012, à 17:10
- Maisondouf
Re : ls taille et nom de fichier
for i in `ls -1`; do echo "$i `ls -l $i | awk '{print $5}'`";done
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#3 Le 10/10/2012, à 17:18
- cep
Hors ligne
#4 Le 10/10/2012, à 17:35
- jejeman
Re : ls taille et nom de fichier
@cep: celui la je l'avais mais il affiche la taille du fichier en block et moi je voulais la taille exacte
@Maisondouf: merci c'est ça qu'il faut... Mais est-ce qu'on peut avoir le chemin complet du fichier + le fichier plutôt que uniquement le nom du fichier
Merci.
Jérôme ;)
Hors ligne
#5 Le 10/10/2012, à 18:29
- pingouinux
Re : ls taille et nom de fichier
Salut,
while read fic;do stat -c "%n %s" "$fic";done < <(find $PWD -type f)
Hors ligne
#6 Le 10/10/2012, à 18:41
- nesthib
Re : ls taille et nom de fichier
@Maisondouf : ta ligne de commande comprend beaucoup de parties inutiles et redondantes, en plus tu vas générer des erreurs sur les fichiers avec des espaces dans le nom.
Une façon propre d'afficher la taille puis le nom de fichier :
ls -l | awk '/^-/{print $5, substr($0, index($0,$9))}'
(le /^-/ filtre pour ne garder que les fichiers)
Pour avoir le chemin complet je pense que tu as besoin de passer par find.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#7 Le 10/10/2012, à 18:55
- pingouinux
Re : ls taille et nom de fichier
@nesthib #6 :
Avec ta commande, il ne faut pas que le nom du fichier soit identique au nom d'utilisateur ou de groupe (entre autres).
Édité : Petite correction
Dernière modification par pingouinux (Le 10/10/2012, à 18:59)
Hors ligne
#8 Le 10/10/2012, à 18:57
- nesthib
Re : ls taille et nom de fichier
tu veux dire « ne soit PAS » ?
Sinon effectivement, c'est un petit hack awk mais qui peut facilement être remplacé par une petite boucle for du 9è au dernier champ.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#9 Le 10/10/2012, à 19:01
- pingouinux
Re : ls taille et nom de fichier
J'ai corrigé.
Hors ligne
#10 Le 10/10/2012, à 19:02
- nesthib
Re : ls taille et nom de fichier
ls -l | awk '/^-/{for (i=9;i<=NF;++i){nom=nom" "$i}; print $5 nom}'
voilà avec une boucle qui n'aura pas ce soucis
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#11 Le 10/10/2012, à 22:47
- Postmortem
Re : ls taille et nom de fichier
Salut,
Je me permet une petite question concernant la récupération de la date : est ce que vous connaissez un moyen "universel" ?
Perso, sous Linux, j'aurais fait comme pingouinux, avec stat.
Par contre, bcp d'unix n'ont pas la commande stat et du coup, ben je fais un peu comme nesthib... Sauf que avec cette méthode, faut faire un awk un peu tarabiscoté... En effet, la date peut avoir des formes diverses et variées selon l'unix utilisé et selon l'ancienneté du fichier : si le fichier est ancien, on a la date avec l'année mais pas forcément l'heure, si le fichier est plus récent, on a la date avec l'heure mais pas l'année etc etc...
Merci d'avance !
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne
#12 Le 11/10/2012, à 05:34
- nesthib
Re : ls taille et nom de fichier
Dès lors que tu bascules vers d'autres unix tu perds vite en "universalité", d'autant plus qu'au delà de la commande stat tu as des différences dans la gestion elle-même des temps (atime, mtime, ctime). Si la question t'intéresse je pense que l'on peut en débattre dans un autre fil (je peux déplacer ton message dans une nouvelle discussion si tu le souhaites).
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#13 Le 11/10/2012, à 06:54
- pingouinux
Re : ls taille et nom de fichier
Bonjour,
Il y a python :
os.stat('/chemin…/fichier').st_atime
os.stat('/chemin…/fichier').st_mtime
os.stat('/chemin…/fichier').st_ctime
Hors ligne
#14 Le 11/10/2012, à 07:24
- nesthib
Re : ls taille et nom de fichier
Attention, avec le module os en python, il y a beaucoup de fonctions os-dépendantes, d'ailleurs la documentation python met en garde sur les différences qui peuvent exister. Il juste juste penser à vérifier ces variabilités de comportement
(du coup on déplace cette discussion pour éviter le HS ?)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#15 Le 11/10/2012, à 10:16
- jejeman
Re : ls taille et nom de fichier
Merci à tous !
Jérôme ;)
Hors ligne
#16 Le 11/10/2012, à 12:11
- credenhill
Re : ls taille et nom de fichier
hello
on peut utiliser perl sur les sytèmes qui n'ont pas stat
$ ls -ln co1.txt
-rwxr-xr-x 1 1000 1000 2730366 2012-04-04 12:26 co1.txt
$ stat -c %s co1.txt
2730366
$ perl -e ' printf "%ld\n" ,(stat($ARGV[0]))[7]' co1.txt
2730366
$
Hors ligne
#17 Le 11/10/2012, à 17:16
- Maisondouf
Re : ls taille et nom de fichier
@nesthib: qu'est ce que tu veux que je te dise, tout ce que je connais de 'awk' c'est 'print'....
Je savais même pas que 'index' et 'substr' existaient, je vais réviser...
ASUS M5A88-v EVO avec AMD FX(tm)-8120 Eight-Core Processor, OS principal Precise 12.04.1 LTS 63bits½
Bricoleur, menteur, inculte, inadapté social et mythomane, enfin d'après certains....
"the secret of my form is summed up in two words, no sport" (Winston Churchill)
Hors ligne
#18 Le 11/10/2012, à 18:20
- Postmortem
Re : ls taille et nom de fichier
Salut,
for i in `ls -1`; do echo "$i `ls -l $i | awk '{print $5}'`";done
Pour boucler sur des fichiers, on ne le fait pas sur la sortie de ls, ça provoque des erreurs des qu'il y a des espaces.
Plutôt que :
for i in `ls -1`
do...
On fait :
for i in *
do
<commande> "$i"
done
Sinon, merci à tous pour vos exemples avec perl ou python.
@nesthib
Je ne sais pas si ça vaut le coup d'ouvrir une discussion. J'ai posté ici vu que ça parlait des dates et je me disais que si quelqu'un avait LA commande magique pour ce problème, ça aurait été intéressant.
Enfin, c'est toi qui voit !
Merci encore et désolé pour ce petit HS !
Édit :
Ah, en fait ça parlait de la taille et non des dates... Donc j'étais bien HS, je viens de m'en rendre compte... C'est parce que j'ai le cerveau qui déraille quand on me fait commencer le taf à 6h du mat' !
Dernière modification par Postmortem (Le 11/10/2012, à 18:31)
Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »
Hors ligne