seleccion de archivos de manera aleatoria en bash???
Alvaro Herrera
alvherre en alvh.no-ip.org
Sab Dic 10 20:45:43 CLST 2005
Carlos Moyano Cubillos escribió:
> El 9/12/05, Alvaro Herrera<alvherre en alvh.no-ip.org>
> ahora, ls -RQ me muestra todo, y me di cuenta que en los directorios
> no existen solamente mp3, hay caratulas de los discos, algunos extras,
> etc.
> asi ke mejor seria algo asi
>
> ls -RQ /mnt/respaldo/musica | grep .mp3
Es mas facil usar find:
find /mnt/respaldo/musica -name "*.mp3"
>
> Alvaro Herrera <alvherre en alvh.no-ip.org> escribio :
> >El comando "stat" te puede ayudar a conocer los tamaños de los archivos
> >y el espacio libre en el pendrive. La idea seria ir sumando los tamaños
> >a medida que escoges los archivos. Obviamente escoger el ultimo archivo
> >va a ser mas dificil :-) Una idea es ordenar la lista de archivos por
> >tamaño y luego quitar todos aquellos que sean mas grandes que la
> >capacidad que queda.
>
> pensando en esto se me ocurrio usar "du" de esta manera
>
> du -ah /mnt/respaldo/musica/ | grep .mp3
> (puede ser sin h, asi evito ka "M" despues del tamaño, pero se me hace
> mas comprensible asi...)
Mi idea de stat era que puedes pedir el tamaño de cada archivo, uno a la
vez, es muy sencillo de usar:
IFS="
"
lista=($(find /mnt/respaldo/musica -name "*.mp3"))
for i in ${lista[@]}; do
tam=$(stat -c %s $i)
echo "el archivo $i pesa $tam bytes"
done
Puedes ordenar todo esto haciendo algo asi:
for i in ${lista[@]}; do
tam=$(stat -c %s $i)
echo "$tam \"$i\""
done | sort -n
Pero claro que la gracia seria obtener la posicion del archivo en la
lista en vez de su nombre, para poder usarla despues en el programa:
for i in ${#lista[@]}; do
tam=$(stat -c %s ${lista[$i]})
echo "$tam $i"
done | sort -n
Aca el primer numero es el tamaño del archivo, y el segundo es su
respectivo indice del arreglo de archivos.
--
Alvaro Herrera http://www.amazon.com/gp/registry/5ZYLFMCVHXC
"XML!" Exclaimed C++. "What are you doing here? You're not a programming
language."
"Tell that to the people who use me," said XML.
Más información sobre la lista de distribución Linux