Unrar recursivo de várias pastas

8

Eu tenho vários arquivos RAR espalhados por vários diretórios, mas todos em uma pasta raiz específica no meu NAS baseado no Debian. Alguém poderia me ajudar a escrever um script simples que recursivamente fosse para cada pasta, irradiasse o conteúdo, voltasse para a pasta pai e passasse para o próximo diretório? Assim:

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

Então, aponte-o para a pasta raiz "Fotos" e passe por ele irradiando tudo no caminho ...

Por exemplo, estrutura de diretório:

*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
fonte

Respostas:

16
find Photos/ -name '*.rar' -execdir unrar e {} \; 
Ignacio Vazquez-Abrams
fonte
Brilhante, não sabia que era tão fácil! Muito obrigado!
Touff
3

unrarpossui recursão interna usando o -r Recurse subdirectoriesswitch.

unrar x -r <parent directory> Extrai o conteúdo de todos os subdiretórios <parent directory>em cada subdiretório, mantendo qualquer estrutura de diretório existente nos .rararquivos. Use em evez de xse a estrutura de diretório não for desejada.

hmj6jmh
fonte
Isso extrairá os arquivos dos arquivos do subdiretório para <parent directory>. Ele não colocará os arquivos extraídos no subdiretório ao lado dos .rararquivos. Portanto, depende do resultado desejado. O OP não foi específico neste caso. Às vezes, sua resposta é útil para mim, mas outras vezes eu preciso da findresposta.
Cliff
1

Se você deseja mover as fotos não enviadas para outro destino, basta digitar o destino no final, desta forma:

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

Dennis
fonte