Contenu | Rechercher | Menus

Annonce

Le forum a une nouvelle maison !
Le forum a été migré sur un nouvel hébergement. Si jamais vous trouvez le moindre problème, n'hésitez pas à nous en faire part !
Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".

#1 Le 10/10/2012, à 16:02

jejeman
Membre

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, à 16:10

Maisondouf
Membre

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, à 16:18

cep
Membre

Re : ls taille et nom de fichier

ls -sh1R

Hors ligne

#4 Le 10/10/2012, à 16:35

jejeman
Membre

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, à 17:29

pingouinux
Membre

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, à 17:41

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

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.

Hors ligne

#7 Le 10/10/2012, à 17:55

pingouinux
Membre

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, à 17:59)

Hors ligne

#8 Le 10/10/2012, à 17:57

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Re : ls taille et nom de fichier

tu veux dire « ne soit PAS » ? tongue

Sinon effectivement, c'est un petit hack awk mais qui peut facilement être remplacé par une petite boucle for du 9è au dernier champ. wink

Hors ligne

#9 Le 10/10/2012, à 18:01

pingouinux
Membre

Re : ls taille et nom de fichier

J'ai corrigé.

Hors ligne

#10 Le 10/10/2012, à 18:02

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

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

Hors ligne

#11 Le 10/10/2012, à 21:47

Postmortem
Membre

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 !


Trusty Tahr (64 bits)

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne

#12 Le 11/10/2012, à 04:34

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

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).

Hors ligne

#13 Le 11/10/2012, à 05:54

pingouinux
Membre

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, à 06:24

nesthib
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

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 smile

(du coup on déplace cette discussion pour éviter le HS ?)

Hors ligne

#15 Le 11/10/2012, à 09:16

jejeman
Membre

Re : ls taille et nom de fichier

Merci à tous !


Jérôme ;)

Hors ligne

#16 Le 11/10/2012, à 11:11

credenhill
Membre

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, à 16:16

Maisondouf
Membre

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... wink


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, à 17:20

Postmortem
Membre

Re : ls taille et nom de fichier

Salut,

Maisondouf a écrit :
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, à 17:31)


Trusty Tahr (64 bits)

Mot' a dit : « Un Hellfest sans Slayer, c'est comme une galette-saucisse sans saucisse ! »

Hors ligne