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 13/04/2012, à 14:58

Nanogratto

[Résolu] ls pour lister répertoire dans un fichier mis en forme

Bonjour,

Je me demandais, est-il possible a partir de la commande "ls" (et d'autres pourquoi pas) de lister un répertoire de son choix dans un fichier (jusque la oui) mis en forme?
Je m'explique, exemple à l'appui. Mon problème est le suivant : J'ai un dossier "Karaoke" qui contient des dossiers "Artistes" dans lequel il y a tout les fichiers "Artiste - Chanson.kar".

  • Jusqu'a présent j'utilise pour ce genre de problème la commande suivante :

cd ~/Documents/Musique/Karaoke
ls -shR --group-directories-first > liste.txt
  • Ca marche! Ca me donne quelque chose comme ça :

.:
total 1,9M
4,0K 2 be 3
4,0K A Cause Des Garcons
4,0K Ade Gagnon
4,0K Affaire Louis Trio
4,0K Alain Barriere
4,0K Alain Bashung
...
...
4,0K Zazie
4,0K Zebda
4,0K Zebulon
4,0K Zouk Machine
   0 liste.txt

./2 be 3:
total 228K
72K 2 be 3 - Donne.kar
84K 2 be 3 - La Salsa.kar
72K 2 be 3 - Toujours Là Pour Toi.kar

./A Cause Des Garcons:
total 52K
52K A Cause Des Garçons - A Cause Des Garçons.kar
...


  • Mais je préfèrerais : (avec les mots barrés en moins)

.:
total 1,9M

4,0K 2 be 3
4,0K A Cause Des Garcons
4,0K Ade Gagnon
4,0K Affaire Louis Trio
4,0K Alain Barriere
4,0K Alain Bashung
...
...
4,0K Zazie
4,0K Zebda
4,0K Zebulon
4,0K Zouk Machine
  0 liste.txt

./2 be 3:
total 228K
72K 2 be 3 - Donne.kar
84K 2 be 3 - La Salsa.kar
72K 2 be 3 - Toujours Là Pour Toi.kar

./A Cause Des Garcons:
total 52K
52K A Cause Des Garçons - A Cause Des Garçons.kar
...

En résumé je voudrais rendre ça le plus lisible possible (les tailles du dossier et des fichiers (4K), le ./ et l'extension ne sont pas nécessaire) pour des gens qui consulte la liste. Je laisse libre court a votre imagination pour la mise en forme, je ne suis pas fermé a ce que les artistes soient en gras et les titres en italique. Du coup je me doute que le .txt ne va pas convenir au mieux right?

Alors la question je la reformule pour être plus claire, est-ce que je peux faire ça avec un ls ou il faut plus que ça, est-ce que c'est compliqué, est-ce que vous pouvez m'aider à la faire, s'il vous plait? Et peut être que la solution existe déja, (I mean, c'est un problème assez courant et pouvant servir dans plusieurs situations, je pense que ça pourraît en interesser plus d'un), mais je l'ai pas trouvée. Et si c'est le moment pour moi de commencer les scripts alors je suis prêt. smile


  • Facultatif :

Une dernière chose : 60% de la commande ls que j'utilisais jusqu'a présent, je ne la comprend pas soit :

-shR --group-directories-first

Et je n'aime pas trop ne pas comprendre ce dont je me sert (bon okay j'ai bien une idée mais c'est pas trés clair.)


Merci de votre aide, toujours précieuse et de qualité sur ce site.

Nanogratto.

Dernière modification par Nanogratto (Le 15/04/2012, à 12:30)

Hors ligne

#2 Le 13/04/2012, à 15:31

aduxas

Re : [Résolu] ls pour lister répertoire dans un fichier mis en forme

Si tu ne veux pas les tailles des fichiers, tu dois laisser tomber l'option -s.  Du coup, l'option -h devient inutile aussi.  Tu peux enlever les ./ avec un petit coup de sed

ls -R --group-directories-first | sed 's/\.\///'

edit: pour enlever la première ligne, avec des regexp étendues:

ls -R --group-directories-first | sed -r 's#\.:?/?##'

Dernière modification par aduxas (Le 13/04/2012, à 16:07)

Hors ligne

#3 Le 13/04/2012, à 21:45

Nanogratto

Re : [Résolu] ls pour lister répertoire dans un fichier mis en forme

Ah! Oui, c'est déjà vachement mieux! Merci beaucoup!

Une idée sur comment rajouter de la mise en forme?

Une autre question : Admettons maintenant que j'ai plein de fichiers toujours écrit de la même forme, a savoir :  "artiste - titre.kar" et je voudrais les ranger chacun dans un dossier "artiste". Est ce que c'est possible? J'ouvre un nouveau topic?

Encore merci.

Hors ligne

#4 Le 26/05/2012, à 15:32

Nanoseb

Re : [Résolu] ls pour lister répertoire dans un fichier mis en forme

Hello l'ami
pour la commande ls si tu ne connais pas les paramètres fait un

man ls

le -R sert a rendre ls récursif (parcours aussi les sous dossiers)
le -s donne en plus la taille des fichiers (size) et le h est pour qu'il adapte l'unité à quelque chose de facilement lisible pas de 654840494654654065406540Ko ^^ (h pour humain)

Pour les dossiers regarde ceci le problème est sensiblement identique au tien
et enfin pour enlever les extensions à la fin de tes fichiers dans ta liste tu peut compléter la ligne de aduxas avec :  awk -F"." '{print $1}' ce qui donne :

ls -R --group-directories-first | sed -r 's#\.:?/?##' |  awk -F"." '{print $1}'

Pour comprendre un peu ce que tu écris lis ceci
Cette ligne fonctionne mais il y a sans doute plus propre avec uniquement une commande sed.

Dernière modification par Nanoseb (Le 26/05/2012, à 15:32)

Hors ligne