[gull] ls au hasard

Julien Künzi julien.kuenzi at epfl.ch
Tue Jan 24 08:45:01 CET 2006


Bonjour,

On Saturday 21 January 2006 16:34, François Heredero - Top Music SA wrote:
> 1) Récupérer une liste de fichiers dans un répertoire et ses sous
> répertoires, AVEC le chemin relatif depuis la commande, genre :
> [moi at ici dossier]# ls --option-inconnue *.mp3
> fichier1.mp3
> fichier2.mp3
> dossier1/fichier1_1.mp3
> dossier1/fichier1_2.mp3
> dossier1/dossier2/fichier2_1.mp3

julien at hello:/usr/share/doc$ find . -name *.txt
./perl/unicore/ReadMe.txt
./sed/sedfaq.txt
./gcc-3.3-base/C++/libstdc++_symbols.txt
./console-tools/contrib/keysyms.h.txt
...

> 2) Mélanger au hasard les lignes d'un fichier
> [moi at ici dossier]# melange resultat_ls
> dossier1/dossier2/fichier2_1.mp3
> fichier1.mp3
> dossier1/fichier1_1.mp3
> dossier1/fichier1_2.mp3
> fichier2.mp3

Je ferais ça en Perl.

julien at hello:/tmp$ cat resultat_ls | perl -e 'my @in = <STDIN>; while ( scalar 
@in ) { print splice @in, int rand scalar @in, 1; }'
./libgii0/env.txt
./texmf/generic/babel/announce.txt
./libwxgtk2.4-python/README.txt
./openssl/doc/HOWTO/keys.txt
...

(la commande sur une seule ligne).

ou plus simple un fichier ./melange.pl à appeler avec les lignes en entrée :
$ ./melange.pl <resultat_ls
- -
#!/usr/bin/perl -w
#
use strict;
my @in = <STDIN>;
while ( scalar @in ) {
        print splice @in, int rand scalar @in, 1;
}
- -

Bref : 
$ find . -name *.mp3 | perl -e 'my @in = <STDIN>; while ( scalar @in ) { print 
splice @in, int rand scalar @in, 1; }'

(à nouveau tout sur une ligne)

Salutations, 
   julien.



More information about the gull mailing list