domingo, 14 de marzo de 2010

Descomprimir varios archivos rar desde Consola

Bueno creo que mas de una vez nos hemos topado con la situacion que tenemos varios archivos rar en un directorio, pero no son el mismo, osea no son rar.part1, rar.part2....
porque de ser ese caso basta con un simple unrar archivo.rar.part1 y el solo busca las otras partes, de estar en el mismo directorio.
pero la solucion que les vengo a compartir es si por ejemplo con ls obtenemos algo asi:


archivo.rar musica.rar imagenes.rar
en ese caso ejecutar
unrar *.rar
provocaria una salida de error,
y la verdad cuando son mas de 5 archivos, es un poco tedioso tener que ejecutar un unrar para cada uno de ellos.
por lo cual tenemos que crear un script en bash. para el cual nos vamos a nuestra consola favorita (yakuake en mi caso, aunque recomiendo guake, para los usuarios de gnome) y ejecutamos un editor de texto (nano o vim) y en el pondremos las lineas de codigo bash

#!/bin/bash
for rar in `ls *.rar`
do
echo Extrayendo $rar en `pwd`
unrar x $rar
done

la primera linea de codigo es donde indicamos que tipo de script será, en nuestro caso, como hemos dicho antes, bash
en ese codigo la variable rar tomara el valor del nombre de cada uno de los archivos rar del directorio actual (por lo tanto la orden ls -l no nos sirve, ya que rar tomaria como valor permisos, propietarios, grupos, fechas de modificacion), mostrara un mensaje con echo indicando cual es el archivo que se esta extrayendo, y luego ejecuta la orden unrar x (para extraer los archivos en un nuevo folder)(vease el manual de rar man unrar)

bueno, despues guardamos (en caso de haber usado nano Ctrl + O y luego Ctrl + X)
le damos permisos de ejecucion
chmod +x script_unrar_all
ya por ultimo solo nos queda trasladar el script al directorio de los archivos rar y ejecutarlo
./script_unrar_all

PD. Los comandos van encerrados entre ` es una especie de tilde inversa bien rara, si ponen comillas simples ' el codigo no funcionará.

4 comentarios:

  1. man pusistes "Descomprimir VARIOR archivos.." XD en ves de varios solo es 1 detalle de ahi todo (y)

    ResponderEliminar
  2. !!!!!!! hey gracias men! no habia visto ese horrorazo! x) gracias

    ResponderEliminar
  3. Bien, gracias por el post, aunque es algo antiguo he llegado aquí buscando eso exactamente. Pero no funciona si tienes varios archivos tipo

    Asimov, Isaac - Vale La Pena Leerme, Vean!.rar
    Asimov, Isaac - Versos Luminosos.rar
    Asimov, Isaac - Viaje Alucinante II Destino Cerebro.rar
    Asimov, Isaac - Viaje Alucinante.rar
    Asimov, Isaac - Vida Y Tiempo.rar
    Asimov, Isaac - Visiones De Robot.rar
    Asimov, Isaac - X Representa Lo Desconocido.rar
    Asimov, Isaac - Yo Robot.rar

    En este caso yo lo he resuelto con

    #!/bin/bash
    ls *.rar > rar.txt
    while read line;do
    unrar e "$line"
    done < rar.txt
    rm rar.txt

    ResponderEliminar
    Respuestas
    1. Hola Anónimo :)
      Pues tienes razon, y muchas gracias por compartir la solución :)
      Saludos!

      Eliminar