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