it-swarm.com.de

Entpacken Sie den Dateiinhalt, ohne jedoch einen Archivordner zu erstellen

Ich habe eine Datei myarchive.Zip, die viele Verzeichnisse, Dateien usw. enthält. Nehmen wir an, diese myarchive.Zip-Datei befindet sich in einem Verzeichnis namens "b". Wenn ich den Befehl "unarch myarchive.Zip" verwende, erstellt das System standardmäßig ein Verzeichnis mit dem Namen "myarchive" mit dem Inhalt der Zip-Datei. Ich möchte nicht, dass das System dieses "myarchive" -Verzeichnis erstellt - ich möchte nur, dass der Inhalt in das Verzeichnis "b" extrahiert wird. Ist das möglich?

Was ich jetzt getan habe, ist einfach einen "cp" -Befehl auszugeben, um die Dateien aus dem neu erstellten Verzeichnis (in diesem Fall "myarchive" nach "b") dorthin zu kopieren, wo ich sie haben möchte.

42
ScoobaSteve

Meine Version von unzip hat ein -j Option, kein Verzeichnis zu erstellen.

Damit

unzip -j /path/to/file.Zip

Extrahiert alle Dateien in das aktuelle Verzeichnis, ohne die in der Datei Zip gespeicherte Verzeichnisstruktur wiederherzustellen.

Wenn Sie nur eine Verzeichnisebene aus dem Archiv entfernen möchten, extrahieren Sie myarchive/dir/file wie dir/file, nicht file), Sie könnten stattdessen bsdtar (das zusätzlich zu Zip Dateien tar Dateien unterstützt) und dessen -s Möglichkeit.

bsdtar -xf /path/to/file.Zip -s'|[^/]*/||'
51

Sieht so aus, als wäre das wirklich einfach mit bsdtar :

bsdtar --strip-components=1 -xvf file.Zip

3
ismail

Was die akzeptierte Antwort nicht angibt, wie zu tun ist, wie Sie in der Frage sagen, wenn Sie dennoch in einen bestimmten Ordner extrahieren möchten, ohne die in den Zip-Dateien gespeicherten Ordnerpfade zu verwenden, können Sie den -j Verwenden. Option mit der Option -d auf folgende Weise:

unzip -j /path/to/file.Zip -d other_folder

oder für Ihren Fall

unzip -j myarchive.Zip -d b
2