You are hereBlogs / arigalt's blog / Como hacer unzip multiples archivos

Como hacer unzip multiples archivos


By arigalt - Posted on 18 November 2009


Como bien sabemos en GNU/Linux
Para descomprimir un archivo (.zip) en linux podemos usar el comando unzip, pero lamentablemente no tiene la opción de descomprimir múltiples archivos .zip con una sola instrucción.
El comando para solo 1 archivo seria algo asi como:

[root@localhost]# unzip archivo.zip

y lo descomprime sin problema


Pero ahora como hago si tengo un directorio lleno de archivos1.zip archivos2.zip, etc mas de 100 archivos?

[root@localhost]# for file in `ls *.zip`; do unzip $file;done

Estoy seguro que hay mejores forma de hacerlo, pero esta me funciona bien.


Bueno de hecho este comando es muy útil para un montón de funciones, por ejemplo si tenemos varios archivos *.sql y queremos meterlos en mysql

[root@localhost]# mysql -uroot -p basededatos < archivo.sql

Esto carga a la "basededatos" las instrucciones del archivo.sql

Entonces para hacer lo funcionar con miles de *.sql hacemos lo mismo que lo que hicimos con el zip:

[root@localhost]# for file in `ls *.sql`; do mysql -uroot -p basededatos < $file;done

Y listo tenemos procesando miles de archivos *.sql con la ayuda de una solo instrucción.


Ahora Gracias a Peter Grant tenemos otro script muy bueno:
"La cosa resulto mas sencilla de lo que yo pensaba, empece con un script para python pero termine con al siempre bien confiable bash.

Aca les dejo el script que convierte todos los archivos .MOV de un directorio a mpg y los mete a un directorio "DVD" con la estructura para poder modificarlo o quemarlo de una vez."

[root@localhost]# cat CrearDVD.sh

for infile in *.MOV
do
mencoder $infile -ovc xvid -xvidencopts pass=1 -oac mp3lame -lameopts vbr=3 -o /dev/null
mencoder $infile -ovc xvid -xvidencopts pass=2:bitrate=1000 -oac mp3lame -lameopts vbr=3 -o $infile.avi
done

for infile in *.avi
do
ffmpeg -i $infile -target ntsc-dvd -aspect 4:3 $infile.mpg
done

for infile in *.mpg
do
dvdauthor -o DVD/ -t $infile
dvdauthor -o DVD/ -T
done


Otro script un poquito mas avanzado para generar un backup de varias tablas de una base de datos:
[root@localhost]# cat backup.sh

export fechaYY=`date +%Y`
export fechaMM=`date +%Y%m`
export fecha=`date +%Y%m%d`
export fechaa=`date +%Y-%m-%d`
#creacion del directorio para el backup
creardir=`mkdir -p /var/backups/$fechaYY/$fechaMM/backup$fecha/ 2>&1`
todo="Tablas:"
for i in `echo "show tables" | mysql -uroot -ppassword mibasededatos|grep -v Tables_in_`;
do
data01=`echo $i; mysqldump --add-drop-table --allow-keywords -q -a -c -uroot -ppassword mibasededatos $i > /tmp/$i.sql 2>&1`
todo="$todo $dato01"
enzip=`cd /tmp; zip /var/backups/$fechaYY/$fechaMM/backup$fecha/$i.zip $i.sql 2>&1`
borrar=`rm -f /tmp/$i.sql 2>&1`
done
lapp=`cd /var/www/html; zip -r /var/backups/$fechaYY/$fechaMM/backup$fecha/la_app.zip . 2>&1`
crear_iso=`mkisofs -r -R -J -l -L -o /tmp/backup.iso /var/backups/$fechaYY/$fechaMM/backup$fecha 2>&1`
grabar_cd=`cdrecord dev=/dev/cdrw speed=2 -sao -pad -v -eject /tmp/backup.iso 2>&1`
rm /tmp/backup.iso 2>&1
echo "Full Backup System Cron Completed
$todo
$borrar
$lapp
$crear_iso
$grabar_cd
" | mail -s"Backup de $fechaa" micorreo@dominio.com

Poll

¿Cual es tu navegador web favorito?: