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