2017-07-23 2 views
-3

Ich bin neu in der Shell arbeiten und kann den Befehl unrar verwenden, um ein einzelnes Archiv zu extrahieren, aber ich möchte viel mehr als das tun. Lassen Sie mich erklären.Archive Extraction Script

Ex:

/ParentFolder/ChildFolder1/xyz.rar 

/ParentFolder/ChildFolder2/abc.rar 

/ParentFolder/ChildFolder3/rty.rar 

/ParentFolder/ChildFolder4/wqe.rar 

Jedes Kind Ordner unterschiedliche Namen hat, die jeweils unterschiedlich benannt Archive. Ich möchte ein Skript erstellen, das die Archive in jedem untergeordneten Ordner extrahiert und auch die extrahierte Datei in den gleichen Namen wie den Ordner umbenennt.

BONUS: Jedes Kind haben Ordner Archive, die wie

archivename.r01 

archivename.r02 

archivename.rar 

aufgeführt sind, wenn sie möglich die gesamte Archivstruktur nach der Extraktion zu löschen, wäre erstaunlich.

Hoffentlich habe ich das gut genug erklärt. Danke im Voraus!

+5

Sie sollten wahrscheinlich zuerst etwas versuchen und erklären, mit was Sie Probleme haben, ansonsten klingt diese Frage wie eine Anfrage für jemanden, der freie Skriptentwicklung macht. –

+0

Ihr "Eingabe" -Beispiel ist sehr gut (d. H. '/ParentFolder/ChildFolder1/xyz.rar .....'). Bearbeite dein Q, um zu zeigen, was du als deine endgültige Ausgabe haben möchtest, und dann werden wir nicht raten, was du meinst. Viel Glück. – shellter

Antwort

0
find /ParentFolder -name "*.rar" -exec unrar '{}' \; 

Finden Sie alle Archivdateien in der Verzeichnisstruktur und unrar.

find /ParentFolder ! -name "*.rar" | awk -F \/ '{ split($4,fle,".");system("mv "$0" "$2"/"$3"/"$3"."fle[2]) }' 

Vorausgesetzt, es gibt keine andere Dateien, die bereits in der Verzeichnisstruktur, die aus dem Archiv entfernt Dateien keine Dateien mit der rar Erweiterung sein und so aussehen für alle, die Datei ohne rar als Erweiterung und Rohr die Ergebnisse durch awk, mit Die Systemfunktion zum Umbenennen der Datei mit mv.

find /ParentFolder -name "*.rar" -exec rm -f '{}' \; 

Schließlich den Befehl find für alle RAR-Dateien ausführen und den Befehl rm -f ausführen, um sie zu entfernen.

+0

DANKE SO VIEL !! Dein erstes Ich musste nur ein "x" neben unrar hinzufügen und es macht seine Arbeit !!!! –