[UNRAR] Automatisches löschen der .rar-Dateien nach dem Entpacken

A

aeson

Foren As
Hallo,

ich konnte mich einige Zeit ohne Hilfe in der weiten Welt von Linux mehr oder weniger zurecht finden aber jetzt habe ich mal wieder ein kleines Problem das es in sich hat.

Wie in der Überschrift schon erwähnt handelt es sich um das Programm UNRAR. Ich möchte nun mit Hilfe von Kommandozeilen-Parametern es hinbekommen das alle .rar-Archive nach dem entpacken automatisch geloescht werden. Mit

Code:
unrar --help

konnte ich keinen Parameter finden, der das Beschreibt was ich möchte. Einige von euch werden jetzt sagen das ich mit

Code:
rm $Datei.rar

arbeiten kann. Dem ist leider nicht so, es ist sehr wichtig das es direkt von UNRAR aus passiert bzw. das alle .rar-Archive gelöscht werden und nicht wie bei rm nur eins. rm in eine Schleife zu setzen würde ich auch nur ungerne machen. Habe auch google schon zu einer Lösung befragt, konnte aber auch nur die Lösung mit rm finden.
 
wiso schleife ? .... pipe

wiso soll unrar das machen ? gibt es dafür einen grund ?

unrar datei1.rar datei2.rar | rm *.rar
 
narf jaja sry ... leute ist freitag :D .... hab gerade an nem problem gesessen ne halbe h das keins ist ;)
ja ne sry -.-
 
wohl eher
Code:
unrar datei1.rar datei2.rar ; rm *.rar
Ich würde es aber mit && erledigen. Das löscht nur, wenn das Entpacken erfolgreich war. ;)

Code:
unrar x datei1.rar [b][color=red]&&[/color][/b] rm *rar

Bei z.B. einem Fipptehler im unrar-Befehl sind die Dateien sonst weg.
 
unrar datei1.rar datei2.rar ; rm *.rar bzw. unrar x datei1.rar && rm *rar

geht leider nicht, weil es sich um selbstentpackende Archive handelt. Also r00,r01,r02 usw. Tut mir leid das ich das vergessen habe zu erwähnen, mein Fehler.
 
Erzähl mal wofür genau du das brauchst. Also wie viele Dateien mit was für Namen entpackt werden sollen und gelöscht werden sollen. Einmalig oder öfter?
 
Also... gehen wir mal davon aus ich habe eine große Datei. Die kann 400 MB, 600 MB, 1500 MB oder ähnliches groß sein. Diese Datein wurden mit RAR zu einem Split-Archiv, um aus einer großen Datei mehre kleine Datein zu machen.

Das heißt, ich habe jetzt je nachdem wie groß die Split-Archive sind so und so viele .rar-Datein die folgender maßen benannt sind.

Datei.rar
Datei.r00
Datei.r01
Datei.r02

usw.

Jetzt möchte ich das Split-Archiv mit UNRAR entpacken um aus mehreren Datein wieder eine einzige Datei zu machen. Nach dem entpacken sollen alle .rar-Archive (r00,r01,r02 usw.) automatisch gelöscht werden. Bei WinRAR gibt es die Funktion "Archive nach dem entpacken löschen". Bei RAR konnte ich leider eine solche Funktion nicht finden und deshalb meine Frage im Forum.
 
Also... gehen wir mal davon aus ich habe eine große Datei. Die kann 400 MB, 600 MB, 1500 MB oder ähnliches groß sein. Diese Datein wurden mit RAR zu einem Split-Archiv, um aus einer großen Datei mehre kleine Datein zu machen.

Das heißt, ich habe jetzt je nachdem wie groß die Split-Archive sind so und so viele .rar-Datein die folgender maßen benannt sind.

Datei.rar
Datei.r00
Datei.r01
Datei.r02

usw.

Jetzt möchte ich das Split-Archiv mit UNRAR entpacken um aus mehreren Datein wieder eine einzige Datei zu machen. Nach dem entpacken sollen alle .rar-Archive (r00,r01,r02 usw.) automatisch gelöscht werden.

Code:
#!/bin/bash
RARFILE=$1
DIR=$(dirname "${RARFILE}")
BASENAME=$(basename "${RARFILE}" .rar)

unrar x "${DIR}/${BASENAME}.rar" && rm "${DIR}/${BASENAME}".r??
Bei WinRAR gibt es die Funktion "Archive nach dem entpacken löschen". Bei RAR konnte ich leider eine solche Funktion nicht finden und deshalb meine Frage im Forum.
Wäre ja auch eine bescheuerte Funktion. Mir würde das automatische Löschen nicht gefallen und UNIX Philosophie ist ein Tool für einen Job aber dafür ein richtiges Tool.
 
Erstmal danke für deine Hilfe. Der Code konnte mir nicht direkt weiterhelfen aber ich konnte mit Hilfe des Codes eine Lösung für mein Problem finden. Mir war es nicht bekannt das man mit .r?? alle Datein ansprechen kann die als Dateiendung ein r + 2 weitere beliebige Zeichen haben.
 
wäre super wenn du deine lösung auch posten würdest, das wenn nocheinmal jmd danach sucht auch eine lösung zu dem thema hat :>
 
Erstmal danke für deine Hilfe. Der Code konnte mir nicht direkt weiterhelfen [...]

Hilfreiche Anmerkung.. Ich hab den hier an ner Linux Kiste getestet insofern habe ich da so meine Zweifel, dass der dir nicht helfen konnte.
 
Hast ja Recht.. Also nur der Vollständigkeit halber:
Den Code von mir packt man in eine Datei z.B. unrarAndDelete macht die Datei ausführbar und entpackt dann mit ./unrarAndDelete PfadZurRARDatei

P.S.: Ja Wolfgang, ich weiß dass du die Anleitung nicht brauchtest :-)
 
Ja ich weiß schon wie das geht... aber ich brauchte es in einem anderen Zusammenhang. Ich werde die korrekte Lösung morgen Posten, da ich jetzt erstmal für eine weile weg muss.
 
erm, ich möchte kein "buzzkill" sein, aber das war exakt das, was ich mir beim Anschauen deines "wrapper-Skripts" auch gedacht hab. Das einzig Sinnvolle daran ist IMHO der "Hinweis" aufs globbing mit dem Fragezeichen.

Und deine "umfangreiche Dokumentation" des Skripts ist ja auch löblich. Nicht einfach so hingekackt ohne ein Wort der Erklärung, sondern beispielhaft Schritt für Schritt erläutert.

Das mit basename und dirname ist soweit ich das überschauen kann völlig unnötig und nur verwirrend. (Nenn mir bitte mal einen Grund, warum das sinnvoll/nötig sein soll...)

Und es funktioniert nur mit einem Rarfile (/Argument) "at a time". Und man kann rar keine extra-Argumente übergeben auf diese Weise. (Hätte man mit "rarFile=$1 ; shift" und dann 'rar x "$rarFile" "$@"' oder so machen können...)

Und das hier:
Hilfreiche Anmerkung.. Ich hab den hier an ner Linux Kiste getestet insofern habe ich da so meine Zweifel, dass der dir nicht helfen konnte.
macht den Anschein, als ob du hier nur hilfst um nachher Rumpöbeln zu können. Der Mensch hat doch klar gesagt was Sache ist: Dein Skript hat ihm schon geholfen (der globbing-part nämlich), aber nicht in seiner "ursprünglichen" Form... Warum man da jetzt "nachtreten" muss, ist mir ehrlich gesagt nicht klar...

Und @TE: man kann sogar mit "character-classes" globben. Also [abc] für ein Zeichen welches entweder a, b oder c ist. Oder [0-9] für eine Zahl. Damit könnte man das globbing-Muster eventuell eingrenzen ( "${rarFile%.rar}".r[0-9][0-9] oder so). Sollte aber auch mit den zwei Fragezeichen recht sicher sein.
 
Ich rege mich nur auf weil ich mir Gerdanken über ein Skript gemacht hat, das im Gegensatz zu anderen vorgestellten Lösungen die Aufgabenstellung (siehe den detaillierten Post des TE) exakt erfüllt und nicht nach dem Motto unrar x bla.rar && rm *rar alle Rar-Dateien im Verzeichnis löscht. (Dafür auch basename und dirname) Und dann wird das lapidar ohne Erklärung abgewiesen und ich frage mich warum ich mir dann die Mühe mache.

Eine Verbesserung des basename/dirnames wäre auch schön, ich schreibe nicht so oft Bash-Skripte, also sieht's dann manchmal etwas krude aus. Das Skript von einer auf mehrere Dateien anpassen kann man auch leicht. Aber mehr als eine rar Datei auf einmal kannst du auch mit unrar nicht entpacken, oder?

P.S.: Das ist keine Kritik an den anderen Vorschlägen, ich wollte nur ein möglichst sicheres kompaktes skript dafür bauen
 
Zuletzt bearbeitet:
Ich rege mich nur auf weil ich mir Gerdanken über ein Skript gemacht hat, das im Gegensatz zu anderen vorgestellten Lösungen die Aufgabenstellung (siehe den detaillierten Post des TE) exakt erfüllt und nicht nach dem Motto unrar x bla.rar && rm *rar alle Rar-Dateien im Verzeichnis löscht. (Dafür auch basename und dirname) Und dann wird das lapidar ohne Erklärung abgewiesen und ich frage mich warum ich mir dann die Mühe mache.

Die meisten Leute hier geben deswegen ihr wissen nur Häppchenweise weiter, weil sie wollen, dass man durch Eigeninitiative lernt und nicht nur mit copy & paste herumspielt.

Und weil ich grad dabei bin geb ich meinen senf auch dazu :D
Code:
for i in *\.rar ; do unrar x $i && rm $(basename $i ar)[a0-9][r0-9] ; done
 
@saeckereier
Nichts gegen deine Bemühungen.
Aber hier ist eigentlich kein Skript nötig, weil es ein einfacher Einzeiler auch tut.
Mein Hinweis war etwas ironisch und nicht gegen dich gerichtet.

Wenn jemand sagt es geht nicht, ohne Erklärung...
Was soll man da schlußfolgern?

Der Hinweis auf Globbing ist zwar richtig, aber nicht unbedingt portable. ;)

Nun laßt es gut sein.

Gruß Wolfgang
 

Ähnliche Themen

Dateien in Unterordnern entpacken?

RedHat 4 (Lineox 4) in VMware mit BusLogic Treiber

Deutsche Installationsanleitung für Slackware 9.0 (und auch 9.1)

Zurück
Oben