Wenn ein Archiv mehrere Dateien im Stammverzeichnis enthält, möchte ich ein Verzeichnis erstellen, das nach dem Dateinamen benannt ist (ohne Erweiterung). Wenn ein Archiv nur ein Verzeichnis enthält, möchte ich es einfach extrahieren. Angenommen, ich habe das folgende Archiv:
# file: withdir.zip
somedir/alpha
somedir/beta
somedir/gamma
Wenn ich es im aktuellen Verzeichnis extrahiere, möchte ich es einfach extrahieren lassen ( unzip withdir.zip
):
somedir/alpha
somedir/beta
somedir/gamma
Nehmen wir nun folgendes Archiv an:
# file: nodir.zip
alpha
beta
gamma
Wenn ich unzip nodir.zip
starte, überfalle ich das aktuelle Verzeichnis mit den drei Dateien:
alpha
beta
gamma
Ich würde lieber rennen unzip -d nodir nodir.zip
:
nodir/alpha
nodir/beta
nodir/gamma
Wenn ich Nautilus benutze und mit der rechten Maustaste auf "Hier extrahieren" klicke. Es verhält sich genau so, wie es sollte. Aber leider finde ich habe nicht eine Befehlszeilenoption für unzip
oder
7z
was ergibt das gleiche Verhalten. Wie erreicht man das? Gibt es andere Tools, die ich stattdessen verwenden kann (keine GUI)?
withdir
für das Archiv,withdir.zip
obwohl es nur ein Verzeichnis im Stammverzeichnis enthält, da esgrep -c "Folder = -"
zurückgibt3
.patool verarbeitet verschiedene Arten von Archiven und erstellt ein Unterverzeichnis, falls das Archiv mehrere Dateien enthält, um zu verhindern, dass das Arbeitsverzeichnis mit den extrahierten Dateien überfüllt ist .
Archiv erstellen
Archiv extrahieren
Verwenden Sie, um eine Liste der unterstützten Formate zu erhalten
patool formats
.quelle
Sie können auch unar verwenden , wodurch standardmäßig ein Verzeichnis erstellt wird, wenn zwei oder mehr Dateien der obersten Ebene vorhanden sind:
Hinzufügen,
-d
um immer ein enthaltenes Verzeichnis zu erstellen.quelle