#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 !
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...
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
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
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
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
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 ?
ben je ne comprends pas pourquoi tu ne prends pas la solution à base du find
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
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
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