Archivo recursivo de varias carpetas

8

Tengo varios archivos RAR distribuidos en varios directorios, pero todos en una carpeta raíz particular en mi NAS basado en Debian. ¿Podría alguien ayudarme a escribir una secuencia de comandos simple que iría recursivamente a cada carpeta, descomprimiría el contenido, volvería a la carpeta principal y pasaría al siguiente directorio? Entonces:

cd Photos/Summer/Italy/
unrar e Italy.rar
wait
cd ../France/
unrar e France.rar
wait
etc...

Así que solo apúntalo a la carpeta raíz "Fotos" y se abrirá paso borrando todo en el camino ...

Por ejemplo, estructura de directorio:

*Photos:
 -Summer
  --Italy
   ---Italy.rar
   ---Italy.r01
   ---Italy.r02
  --France
   ---France.rar
   ---France.r01
   ---France.r02
 -Winter
  --Siberia
   ---Siberia.rar
   ---Siberia.r01
   ---Siberia.r02
  --Canada
   ---Snow.rar
   ---Snow.r01
   ---Snow.r02
Touff
fuente

Respuestas:

16
find Photos/ -name '*.rar' -execdir unrar e {} \; 
Ignacio Vazquez-Abrams
fuente
¡Brillante, no sabía que era tan fácil! ¡Muchas gracias!
Touff
3

unrartiene recursividad incorporada usando el -r Recurse subdirectoriesinterruptor.

unrar x -r <parent directory> Extrae el contenido de todos los subdirectorios <parent directory>en cada subdirectorio, manteniendo cualquier estructura de directorio que exista en los .rararchivos. Use en elugar de xsi la estructura del directorio no es deseada.

hmj6jmh
fuente
Esto extraerá los archivos de los archivos del subdirectorio <parent directory>. No colocará los archivos extraídos en el subdirectorio junto a los .rararchivos. Por lo tanto, depende de qué resultado se desee. El OP no fue específico en este caso. A veces su respuesta es útil para mí, pero otras veces necesito la findrespuesta.
Acantilado el
1

Si desea mover las fotos sin archivar a otro destino, simplemente ingrese el destino al final, así:

find source_dir/ -name '*.rar' -execdir unrar e -o- {} /new/destination_dir/ \;

Dennis
fuente