Rekursywny unrar kilku folderów

8

Mam kilka archiwów RAR rozmieszczonych w wielu katalogach, ale wszystkie w określonym folderze głównym na moim serwerze NAS opartym na Debianie. Czy ktoś może mi pomóc napisać prosty skrypt, który rekurencyjnie przejdzie do każdego folderu, rozpakuje zawartość, wróci do folderu nadrzędnego i przejdzie do następnego katalogu? Więc:

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

Więc po prostu skieruj go do folderu głównego „Zdjęcia”, a on przebije się przez to, że po drodze wszystko się nie robi ...

Np. Struktura katalogów:

*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
źródło

Odpowiedzi:

16
find Photos/ -name '*.rar' -execdir unrar e {} \; 
Ignacio Vazquez-Abrams
źródło
Genialne, nie wiedziałem, że to takie proste! Dziękuję Ci bardzo!
Touff,
3

unrarma wbudowaną rekurencję za pomocą -r Recurse subdirectoriesprzełącznika.

unrar x -r <parent directory> Wyodrębnia zawartość wszystkich podkatalogów <parent directory>do każdego podkatalogu, zachowując dowolną strukturę katalogów istniejącą w .rarplikach. Użyj ezamiast, xjeśli struktura katalogów jest niepożądana.

hmj6jmh
źródło
Spowoduje to wyodrębnienie plików z archiwów podkatalogów <parent directory>. Nie umieści wyodrębnionych plików w podkatalogu obok .rarplików. To zależy od tego, jaki wynik jest pożądany. OP nie był konkretny w tym przypadku. Czasami twoja odpowiedź jest dla mnie przydatna, ale innym razem potrzebuję findodpowiedzi.
Cliff
1

Jeśli chcesz przenieść nierozpoznane zdjęcia do innego miejsca docelowego, po prostu wpisz miejsce docelowe na końcu, w ten sposób:

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

Dennis
źródło