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