Script para comprimir

Buenas, me ha surgido un problemilla y he pensado que a lo mejor con un script podría solucionarlo, pero no tengo mucha idea de como hacerlo. Os explico:

Tengo en mi web una galería de imágenes y para descargarlas, en el directorio donde están deben estar esas mismas imágenes comprimidas (en zip o gz... he optado por el zip porque la gran mayoría de los usuarios de la web usan winzip). Pues hay algunos directorios que tienen 30, 50 o incluso 100 fotos... y me da algo solo de pensar en ir comprimiendo una a una cada una de ellas.

¿Se podría hacer un script para que comprimiera, con el mismo nombre (foto1.jpg->foto1.zip), cada una de las fotos (en este caso son fotos, pero podria ser para cualquier cosa, no?) por separado?

Un saludo!
for i in *.jpg
do
    gzip $i $(basename $i .jpg).gz
done


No garantizo que funcione, pero si no busca por el foro, que el for se usa para todo y algo debe haber escrito. Aparte, no se como comprimir en zip en linea de comandos :/

Saludos
Edit: Versión 0.02 xDD
Otro que no sabe comprimir zip pero si no me equivoco winzip y/o winrar se apañan con los tgz.

for i in *.jpg
do
     base=`basename $i .jpg`
     tar -czf ${base}.tgz $i
done
Muuuuchiiiisimas gracias ^___^

Funcionan los dos.

Muchas muchas gracias.

Un saludo!
Na, el mio es mejor xD
¿Que es eso de usar un tar para un solo fichero? Nada nada
Esa versión 0.02 sigue soltando errores pequeño [poraki]
bah, si tengo que debuggear algo, tengo practicas por delante, te dejo los honores de ser la version que funciona xD
NeoRave escribió:si no me equivoco winzip y/o winrar se apañan con los tgz.


Y si no se apañasen, que se busquen la vida, que para eso el formato .tgz es libre.

ashitaka, si tuvieses que colgar un trabajo ¿lo colgarías en formato doc "porque es el que usa la mayoría"?
yanosoyyo escribió:ashitaka, si tuvieses que colgar un trabajo ¿lo colgarías en formato doc "porque es el que usa la mayoría"?


Golpe bajo xD. Gracias a dios es mas facil tratar con zip's en SL que con docs ^^
NeoRave escribió:Esa versión 0.02 sigue soltando errores pequeño [poraki]
Es verdad xDD pero la compresion la hace :P Y mientras los usuarios de la web no me llenen el foro de feedback xDDD yo contento... O sea, todos contentos :P

Saludos! :D

PD: voy a ver si aprendo un poquito de "scripting"... mira que yo habia pensao en un WHILE... madre mia... hace tanto que no programo na de naaaa...
Raharu escribió:Na, el mio es mejor xD


El tuyo es mejor, pero no funciona siempre... }:-)

Falla cuando los nombres tienen espacios porque te has olvidado de las comillas.

Mi versión:

#!/bin/sh

COMPRESS=gzip # Comprime con gzip
#COMPRESS=zip # Comprime con zip

function zip() {
        exe=`which zip`
        $exe -r "${1%.*}".zip "$1"
}

function gzip() {
        exe=`which gzip`
        $exe -c "$1" > "${1%.*}".gz
}

for i in *.jpg *.JPG *.JPEG *.jpeg; do
        $COMPRESS "$i"
done


EDITO:

Los which deberían estar fuera de las funciones, porque si no se ejecutan en cada iteración...
Bueno si zip y gzip estan en el PATH cuando se invoque el script (que deberían) este los encontrará así que te puedes deshacer de los which.

Saludos.Ferdy
yanosoyyo escribió:ashitaka, si tuvieses que colgar un trabajo ¿lo colgarías en formato doc "porque es el que usa la mayoría"?
No, en PDF o HTML [sonrisa] No, si por mí que se busquen la vida, pero ya que la gran mayoría de usuarios de la web son conocidos, no les hago el feo jejeje... además, al final me he quedado con GZ no con ZIP. Y bueno, me ha venido a la cabeza que voy a darles una solución a los que no usen WINRAR o WINZIP: les pongo en las descargas el WINTAR (creo que se llamaba asi) y listo :D

Y volviendo a los scripts, con permiso de Raharu y NeoRave, me voy a quedar con el de auxiliar :P ¿No os importa no? De todas formas, gracias de nuevo, porque habeis contestado rapidisimo y, además, con una solución ^__^ (para que luego venga alguno y diga que en este foro no se ayuda)

Saludos!
12 respuestas