it-swarm.com.de

Extrahieren Sie nur eine bestimmte Datei aus einem komprimierten Archiv in ein bestimmtes Verzeichnis

Ich muss eine einzelne Datei aus einer Zip-Datei extrahieren, zu der ich den Pfad kenne. Gibt es einen Befehl wie den folgenden:

unzip -d . myarchive.Zip path/to/zipped/file.txt

Leider extrahiert und erstellt der obige Befehl den gesamten Pfad zur Datei unter ./path/to/zipped/file.txt. Gibt es eine Möglichkeit für mich, die Datei einfach in ein bestimmtes Verzeichnis zu ziehen?

168
Naftuli Kay

Mit der Option -p Können Sie nur den Text in die Standardausgabe extrahieren:

unzip -p myarchive.Zip path/to/zipped/file.txt >file.txt

Dadurch werden nicht die Metadaten (Datum, Berechtigungen, ...) extrahiert, sondern nur der Dateiinhalt. Dies ist der Preis, den Sie zahlen müssen, um die Datei anschließend nicht mehr verschieben zu müssen.

Alternativ können Sie das Archiv als Verzeichnis bereitstellen und die Datei einfach kopieren. Mit AVFS :

mountavfs
cp -p ~/.avfs"$PWD/myarchive.Zip#"/path/to/zipped/file.txt .

Oder mit Fuse-Zip :

mkdir myarchive.d
Fuse-Zip myarchive.Zip myarchive.d
cp -p myarchive.d/path/to/zipped/file.txt .
fusermount -u myarchive.d; rmdir myarchive.d
unzip -j "myarchive.Zip" "in/archive/file.txt" -d "/path/to/unzip/to"

Geben Sie den vollständigen Pfad für die komprimierte Datei ein, nicht nur den Dateinamen. Stellen Sie sicher, dass die Struktur in der Zip-Datei angezeigt wird.

Dadurch wird die einzelne Datei file.txt In myarchive.Zip Nach /path/to/unzip/to/file.txt Extrahiert.

169
sMyles

Einfachere Version:

unzip ARCHIVE_NAME PATH_OF_FILE_INSIDE_ARCHIVE

Dadurch wird PATH_OF_FILE_INSIDE_ARCHIVE im aktuellen Verzeichnis, extrahiert jedoch nur die angegebene Datei.

So listen Sie alle Dateien in einem Zip-Archiv auf:

unzip -l ARCHIVE_NAME
25
Taukir

Unter macOS , das standardmäßig Info-Zip verwendet

Listen Sie zuerst die Dateien auf, um zu finden, was Sie wollen

unzip -l my.Zip

Geben Sie dann eine Liste der Dateien an, die aus dem Archiv extrahiert werden sollen

unzip my.Zip annoying/path/to/file

Kombiniere mit -p für stdout

unzip -p my.Zip annoying/path/to/file >./file

einfache Verwendung:

unzip zipfile.Zip path/inside/Zip/file.txt

nd es wird die Datei aufblasen.

$ unzip -l ./../html.Zip | grep wp-config

     3328  07-22-2019 15:10   html/wp-config.php

     2898  01-07-2019 23:30   html/wp-config-sample.php

$ unzip ./../html.Zip html/wp-config.php

     Archive:  ./../html.Zip
     inflating: html/wp-config.php

$ ls -lrth

     total 4.0K
     drwxr-sr-x 2 Apache apache 4.0K Jul 26 14:41 html

$ ls -lrth html/*

     total 4.0K
     -rw-rw-rw- 1 Apache apache 3.3K Jul 22 15:10 wp-config.php

In ein relatives Verzeichnis extrahieren

unzip -j -d relativedir archive.Zip path/in/archive/file.ext

In das aktuelle Verzeichnis extrahieren

unzip -j -d . archive.Zip path/in/archive/file.ext

Auszug in absolutes Verzeichnis

unzip -j -d /absolutedir archive.Zip path/in/archive/file.ext
0
Gapmeister66