seleccion de archivos de manera aleatoria en bash???

Mauricio Vergara Ereche mave007 en alumnos.inf.utfsm.cl
Vie Dic 9 03:08:41 CLST 2005


On Thu, Dec 08, 2005 at 10:32:38PM -0300, Alvaro Herrera wrote:
> Carlos Moyano Cubillos escribió:
> > hola listeros

Hola!

> > tengo una consultaa:
> > 
> > kiero realizar un scrip bash que me seleccione aleatoriamente una
> > cantidad determinada de archivos desde una carpeta especifica
> > (incluyendo sub directorios)..
> 
> lista=$(find /donde/estan/los/archivos -type f)
> num=$[RANDOM*$(echo $lista | wc -w)/32767]
> echo $lista | awk '{print $'$num'}'
> 
> Seguro que hay alguna forma mas eficiente, pero esto lo saque de un
> script que escribi hace an~os :-)

Un pequeño arreglin para saltarse el awk y ocupar sólo la potencialidad de
BASH (erm... excepto con lo del find).

Primero, para que la variable $lista quede como un vector, se puede agregar
unos paréntesis a lo que describió Alvaro... o sea:

lista=($(find /donde/estan/los/archivos -type f -print 2>/dev/null))

Luego... para sacar 10 archivos randomicos de esa lista, se puede hacer:

for i in {1..10} ; do
    num=$[RANDOM*${#lista[@]}/32767]
    echo ${lista[$num]}
done    

Aunque después de algunos ensayos y errores, me di cuenta que al hacer
find . -type f | wc -l
me daba un valor un poco menor que al hacer
echo ${#lista[@]}

Asumo que eso se debe a archivos que tengan espacios son interpretados como
nombres distintos... y por lo tanto los toma como archivos diferentes... Lo
cual me lleva a imaginar que también debería haber problema con nombres
"especiales" que vengan con comillas, paréntesis o cosas por el estilo.

eso

saludirijillos!

-- 
Mauricio Vergara Ereche                 mave [@] inf [.] utfsm [.] cl
counter.li.org: #188365                          Fonos: +56 9 1241718
Memorista Ing. Ej. Informatica UTFSM                    +56 32 472707
Valparaiso, CHILE                               http://mave.foobar.cl
------------ próxima parte ------------
Se ha borrado un mensaje que no está en formato texto plano...
Nombre     : no disponible
Tipo       : application/pgp-signature
Tamaño     : 189 bytes
Descripción: no disponible
Url        : http://listas.inf.utfsm.cl/pipermail/linux/attachments/20051209/519187fe/attachment.bin


Más información sobre la lista de distribución Linux