Blog Entrag vom 15.09.2010

Rezip

Ich hatte gestern das Problem, dass ich in einem Ordner ziemlich viele einzelne RAR-Archive hatte. Mit diesen konnte ich nur bedingt etwas anfangen, und so dachte ich mir, wäre doch nett, die Daten in der gleichen Struktur, aber in Zip-Archiven vorliegen zu haben. Zip hat den entscheidenen Vorteil, dass OSX, aber auch so gut wie jedes anderes Betriebssystem, sehr gut damit umgehen.

Ich habe mich dann auf die Suche nach einem Rezip-Tool gemacht. Ein kleines Programm, welches ein Verzeichnis mit Archiven entgegen nimmt, und diese in einem anderen Verzeichnis ablegt. Allerdings neu gepackt - und von RAR in Zip konvertiert!

Das ganze hat sich dann als wenig erfolgreich herausgestellt. So einfach die Aufgabenstellung auch war, ein fertiges Produkt habe ich nicht gefunden. Oder zumindest nicht in annehmbarer Zeit und mit passender Funktionalität.

Ich habe mich daher irgendwann dazu entschlossen, das ganze selber zu implementieren. Das Problem ist dabei gerade so komplex, dass ich es nicht in einer Unix-Pipe unterbringen konnte. Auf der anderen Seite aber so einfach, dass kein vollständiges Programm notwendig war.

Ich habe daher ein kurzer Shell-Script geschrieben. In meinem Beispiel verwende ich ausschließlich unzip/zip. Das kann aber relativ leicht durch ein anderen Entpacker oder Packer ersetzt werden. unzip/zip sind aber auf jedem Standard-Mac vorhanden, und das Beispiel kann damit nachvollzogen werden:

#!/bin/bash

export D=`dirname $0`

mkdir $D/temp
rm $D/temp/*

for i in `ls "$1"`; do
	echo $i
	unzip "$1$i" -d $D/temp >/dev/null
	zip -j -m -q "$2$i" $D/temp/* >/dev/null
	rm $D/temp/*
done

Das Script erwartet zwei Parameter. Das erste ist das Verzeichnis, in dem die Quell-Archive liegen. Das zweite Parameter ist das Ziel, wohin die neu gepackten Dateien gespeichert werden sollen.

Weder das Eingabe- noch Ausgabe-Parameter wird kontrolliert. Auch wird im aktuellen Verzeichnis ein Temp-Verzeichnis angelegt, der Inhalt gelöscht, und dann zum Zwischenspeichern genutzt. Möglich dass es noch weitere Mankos gibt, für mich hat das Script so aber einwandfrei funktioniert…


Kommentare:

Bisher keine Kommentare.


Eigenen Kommentar abgeben: