Rekursives Unrar mehrerer Ordner

8

Ich habe mehrere RAR-Archive, die auf mehrere Verzeichnisse verteilt sind, aber alle unter einem bestimmten Stammordner auf meinem Debian-basierten NAS. Könnte mir jemand helfen, ein einfaches Skript zu schreiben, das rekursiv in jeden Ordner verschoben, den Inhalt freigegeben, zum übergeordneten Ordner zurückkehrt und zum nächsten Verzeichnis wechselt? Damit:

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

Zeigen Sie also einfach auf den Stammordner "Fotos" und es blitzt durch ihn, ohne alles auf dem Weg zu belasten ...

ZB Verzeichnisstruktur:

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

Antworten:

16
find Photos/ -name '*.rar' -execdir unrar e {} \; 
Ignacio Vazquez-Abrams
quelle
Genial, wusste nicht, dass es so einfach ist! Vielen Dank!
Touff
3

unrarhat eine eingebaute Rekursion mit dem -r Recurse subdirectoriesSchalter.

unrar x -r <parent directory> Extrahiert den Inhalt aller Unterverzeichnisse unter <parent directory>in jedes Unterverzeichnis, wobei die in den .rarDateien vorhandene Verzeichnisstruktur beibehalten wird. Verwenden Sie eanstelle von, xwenn die Verzeichnisstruktur unerwünscht ist.

hmj6jmh
quelle
Dadurch werden die Dateien aus den Unterverzeichnisarchiven in extrahiert <parent directory>. Die extrahierten Dateien werden nicht im Unterverzeichnis neben den .rarDateien abgelegt. Es kommt also darauf an, welches Ergebnis gewünscht wird. Das OP war in diesem Fall nicht spezifisch. Manchmal ist Ihre Antwort für mich nützlich, aber manchmal brauche ich die findAntwort.
Cliff
1

Wenn Sie die nicht freigegebenen Fotos an ein anderes Ziel verschieben möchten, geben Sie das Ziel am Ende wie folgt ein:

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

Dennis
quelle