Aquí tenéis un pequeño dilema que me ha ocurrido hace poco, tenia que comprimir unos 6000 y pico ficheros de forma independiente, de manera que pudiese usarlos un programa después. El ejemplo esta para generar ficheros zips, aunque he dejado gz y bzip2 como ejemplos alternativos comentados.

Si te interesa sigue leyendo el post…

Tenia creado uno anterior similar a este para las imágenes…

#!/bin/bash
mkdir fotos
for i in $(ls *.jpg)
do
convert “$i” -resize 640×480 -quality 80 fotos/”$i”
done

El problema es que la salida de ls considera que los separadores son los espacios con lo cual no funciona con ficheros que contienen espacios, para solventarlo esta modificación que es mucho mas eficiente que el ls…

#!/bin/bash
# comprimir varios ficheros uno por uno en diferentes ficheros

for i in *.smc ;
do
zip -9 “$i”.zip “$i”
#gzip -9 “$i”
#bzip2 “$i”
done

Al final el equivalente para convertir fotos pues queda asi…

#!/bin/bash
mkdir fotos
for i in *.jpg ;
do
convert “$i” -resize 640×480 -quality 80 fotos/”$i”
done

Espero que os sea util.