Unar récursif de plusieurs dossiers

8

J'ai plusieurs archives RAR réparties dans plusieurs répertoires mais toutes sous un dossier racine particulier sur mon NAS basé sur Debian. Quelqu'un pourrait-il m'aider à écrire un script simple qui rentrerait récursivement dans chaque dossier, déraillerait le contenu, retournerait au dossier parent et passerait au répertoire suivant? Donc:

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

Il suffit donc de le pointer vers le dossier racine "Photos" et il passe à travers tout sans se soucier du chemin ...

Par exemple, la structure du répertoire:

*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
la source

Réponses:

16
find Photos/ -name '*.rar' -execdir unrar e {} \; 
Ignacio Vazquez-Abrams
la source
Génial, je ne savais pas que c'était si facile! Merci beaucoup!
Touff
3

unrara une récursivité intégrée utilisant le -r Recurse subdirectoriescommutateur.

unrar x -r <parent directory> Extrait le contenu de tous les sous-répertoires sous <parent directory>dans chaque sous-répertoire, en conservant toute structure de répertoires qui existe dans les .rarfichiers. À utiliser à la eplace de xsi la structure de répertoires n'est pas souhaitée.

hmj6jmh
la source
Cela extraira les fichiers des archives du sous-répertoire dans <parent directory>. Il ne placera pas les fichiers extraits dans le sous-répertoire à côté des .rarfichiers. Cela dépend donc du résultat souhaité. L'OP n'était pas spécifique dans ce cas. Parfois, votre réponse m'est utile, mais d'autres fois, j'ai besoin de la findréponse.
Cliff
1

Si vous souhaitez déplacer les photos non enregistrées vers une autre destination, entrez simplement la destination à la fin, comme ceci:

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

Dennis
la source