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 27/09/2010, à 17:15

Kelek

[RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

Solution donnée par Totor :

ls -lRhQ | awk -F'"' '/:$/ { printf "\n%s:",$2} /[^:]$/{ split($1,infos,/[[:space:]]+/); printf "%-6s %s\n", infos[5], $2 }' >listing.txt

Une autre solution a été proposée par AnsuzPeorth mais le résultat est imparfait (noms des dossiers tronqués) :

ls -lRh | tr -s ' *' | cut -d ' ' -f1,2,3,4,6,7 --complement >listing.txt

****************************************************

Bonjour,

pour lister les fichiers contenus dans certains dossiers, j'utilise actuellement la commande

ls -lhR >listing.txt

qui a l'avantage d'afficher la taille des fichiers tout en listant le contenu des sous-dossiers.
Cependant, le résultat ne me convient pas : les listings en questions sont destinés à des correspondants qui peuvent faire leur choix dans le contenu des dossiers, ils n'ont que faire des :

  • droits d'écriture

  • propriétaire

  • date de création

que j'enlève pour l'instant à  la main, ce qui peut s'avérer très fastidieux quand il s'agit de plus de 200 fichiers listés, même en utilisant CTRL+H...

Ce que je désire, c'est tout simplement

emplacement    taille    nom-du-fichier.extension

Or avec la commande ls la taille n'est affichable qu'avec l'option h qui elle-même implique l'option l, qui génère cette abondance de détails.

Auriez-vous une solution (ligne de commande, script ou logiciel) à me proposer (je suis sous Xubuntu 10.04, j'utilise thunar et mousepad) ?

Dernière modification par Kelek (Le 10/10/2010, à 16:32)


Config PC - OS : Xubuntu 10.04 x86-64

Hors ligne

#2 Le 27/09/2010, à 17:36

AnsuzPeorth

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

bjr,
Avec find tu peux obtenir la sortie que tu veux (voir options de printf), et tu règles la récursivité via l'option maxdepth.
Si malgré tout, tu veux garder la commande ls, amuse toi avec awk pour formater la sortie.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#3 Le 27/09/2010, à 17:42

ehmicky

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

find DIR -printf "%-30h%-20s%-30f\n"

Si j'ai bien compris et que tu veux que le premier champs soit le répertoire contenant le fichier, et le dernier champs ce fichier (sans le répertoire le contenant)...
Mettre DIR avec un chemin absolu ou relatif selon ce que tu veux. Par contre, ça t'affiche la taille en octets.

Edit : si tu veux garder l'idée du ls -Rhl, comme le dit Ansuz, tu faire quelque chose comme ça :

ls -lRh | awk '/:$/ { printf $1 } { printf "%-6s %s\n", $5, $8 }'

Edit2 : la dernière solution sépare différemment le basename du dirname, mais je comprends pas trop ce que tu veux. Perso, si c'est pour un client, le deuxième me paraît plus lisible. Pareil, si tu veux les noms de répertoire en chemin absolu et non relatif, fais un ls -lRh DIR, avec DIR en chemin absolu

Dernière modification par ehmicky (Le 27/09/2010, à 18:02)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#4 Le 27/09/2010, à 21:08

Kelek

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

Merci pour vos réponses !

ehmicky a écrit :
ls -lRh | awk '/:$/ { printf $1 } { printf "%-6s %s\n", $5, $8 }'

en ajoutant "> listing.txt" e résultat est très proche de ce que je désire. Est-il possible d'intégrer à cette ligne un élément qui ferait accepter les espaces dans les noms de fichiers au processus ? actuellement, ces noms sont évidemment tronqués.

Si ça n'est pas possible, après duplication de la bdd, je retravaillerai tous les noms de fichiers (y'en a...) et de dossiers avec pyRenamer en remplaçant les " " par "_", ouverture du listing créé,  retravail avec un CTRL+H et enregistrement dans la bdd initiale. Mais si je pouvais éviter ça... big_smile

Dernière modification par Kelek (Le 27/09/2010, à 21:09)


Config PC - OS : Xubuntu 10.04 x86-64

Hors ligne

#5 Le 27/09/2010, à 21:25

ehmicky

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

C'est possible, mais je pense que la meilleure solution, c'est directement de ne travailler qu'avec des noms de fichiers sans whitespace, et donc, utiliser pyRenamer ou autre pour corriger cela si tu as des fichiers au nom problématique.
A moins que ça soit pas possible vis-à-vis du client ?


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#6 Le 27/09/2010, à 21:32

Totor

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

ben je ne comprends pas pourquoi tu ne prends pas la solution à base du find hmm
Si tu tiens absolument à utiliser ls :

ls -lRhQ | awk -F'"' '/:$/ { printf "\n%s:",$2} /[^:]$/{ split($1,infos,/[[:space:]]+/); printf "%-6s %s\n", infos[5], $2 }'

Dernière modification par Totor (Le 27/09/2010, à 21:32)


-- Lucid Lynx --

Hors ligne

#7 Le 27/09/2010, à 21:36

AnsuzPeorth

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

Pour garder les espaces, une solution:

 ls -lRh | tr -s '  ' ' ' | cut -d ' ' -f1,2,3,4,6,7 --complement

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#8 Le 27/09/2010, à 21:53

ehmicky

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

AnsuzPeorth a écrit :

Pour garder les espaces, une solution:

 ls -lRh | tr -s '  ' ' ' | cut -d ' ' -f1,2,3,4,6,7 --complement
ls -lRh | tr -s' ' | cut -d ' ' -f1,2,3,4,6,7 --complement

Sympa le --complement big_smile


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#9 Le 27/09/2010, à 22:18

Kelek

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

AnsuzPeorth a écrit :

Pour garder les espaces, une solution:

 ls -lRh | tr -s '  ' ' ' | cut -d ' ' -f1,2,3,4,6,7 --complement

oups :

 ls -lRh | tr -s' ' | cut -d ' ' -f1,2,3,4,6,7 --complement
tr: option invalide -- ' '
Saisissez « tr --help » pour plus d'informations.

ça semble élégant, mais il y a un truc qui coince... tu saurais me dire lequel ?

Totor a écrit :

ben je ne comprends pas pourquoi tu ne prends pas la solution à base du find hmm
Si tu tiens absolument à utiliser ls :

ls -lRhQ | awk -F'"' '/:$/ { printf "\n%s:",$2} /[^:]$/{ split($1,infos,/[[:space:]]+/); printf "%-6s %s\n", infos[5], $2 }'

Parfait ! (je t'avoue que je ne sais pas non plus pourquoi je fixe sur "ls" et pas "find", si ce n'est que l'affichage en octets déroutera les destinataires)

En tous cas, merci pour vos réponses qui me donnent envie d'en savoir plus sur les syntaxes que vous avez utlisées, histoire d'être un peu plus autonome ! 1 ou 2 liens vers des tutos seraient vraiment bienvenus, svp.

Dernière modification par Kelek (Le 27/09/2010, à 22:30)


Config PC - OS : Xubuntu 10.04 x86-64

Hors ligne

#10 Le 27/09/2010, à 22:57

ehmicky

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

C'est l'espace qui cloche, désolé !

ls -lRh | tr -s ' ' | cut -d ' ' -f1,2,3,4,6,7 --complement

Pour awk, j'avais appris en commençant par ça. C'est pas le plus complet ou bien toujous canonique, mais normalement les tutos pour apprends awk sont vraiment incompréhensibles, celui-là au moins évolue pas à pas.
Ensuite, pour tout ce qui est cut et tr, un :

man cut

et :

man tr

suffisent selon moi smile

Dernière modification par ehmicky (Le 27/09/2010, à 23:00)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#11 Le 27/09/2010, à 23:29

AnsuzPeorth

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

Il serait même plus prudent:

ls -lRh | tr -s ' *' | cut -d ' ' -f1,2,3,4,6,7 --complement

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#12 Le 27/09/2010, à 23:40

ehmicky

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

$ echo " 1  2   3    " | tr -s ' '
 1 2 3 
$ echo " 1  2   3    " | tr -s ' *'
 1 2 3 
$ echo " 1  2   3    " | tr -s '  ' ' '
 1 2 3

Dernière modification par ehmicky (Le 27/09/2010, à 23:46)


Stego++, bibliothèque libre de stéganographie (avec cryptographie), à venir !
Besoin de votre aide :
Stats sur les compilateurs C++ les plus utilisés
Comment utiliser les archetypes C++ ?

Hors ligne

#13 Le 28/09/2010, à 00:08

AnsuzPeorth

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

effectivement, j'avais pas lu le man, faut dire que j'utilise rarement tr ...

-s, --squeeze-repeats
              replace each input sequence of  a  repeated  character  that  is
              listed in SET1 with a single occurrence of that character

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#14 Le 28/09/2010, à 08:44

Kelek

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

AnsuzPeorth a écrit :
ls -lRh | tr -s ' *' | cut -d ' ' -f1,2,3,4,6,7 --complement

le résultat a un inconvénient : les noms des sous-dossiers n'apparaissent pas tous, il sont parfois incomplets (le premier mot seulement) - je suppose qu'il s'agit encore d'un problème d'espace.

ls -lRhQ | awk -F'"' '/:$/ { printf "\n%s:",$2} /[^:]$/{ split($1,infos,/[[:space:]]+/); printf "%-6s %s\n", infos[5], $2 }'

reste la meilleure solution pour le moment.

Dernière modification par Kelek (Le 10/10/2010, à 16:33)


Config PC - OS : Xubuntu 10.04 x86-64

Hors ligne

#15 Le 10/10/2010, à 16:33

Kelek

Re : [RÉSOLU] Listing : équivalent à ls -lhR avec moins de détails

[RÉSOLU]
Merci encore pour vos solutions ! il va falloir que je m'attèle à leur déchiffrage...
Cordialement,
Kelek


Config PC - OS : Xubuntu 10.04 x86-64

Hors ligne