Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/10/2012, à 16: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, à 16: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, à 16:18

cep

Re : ls taille et nom de fichier

ls -sh1R

Hors ligne

#4 Le 10/10/2012, à 16: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, à 17: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, à 17: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 10/10/2012, à 17: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, à 17:59)

Hors ligne

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

nesthib

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


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

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

pingouinux

Re : ls taille et nom de fichier

J'ai corrigé.

Hors ligne

#10 Le 10/10/2012, à 18: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#11 Le 10/10/2012, à 21: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, à 04: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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#13 Le 11/10/2012, à 05: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, à 06: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 smile

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


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

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

jejeman

Re : ls taille et nom de fichier

Merci à tous !


Jérôme ;)

Hors ligne

#16 Le 11/10/2012, à 11: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, à 16: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... 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

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)


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

Hors ligne