Wie können wir bestimmte Dateien aus einer großen tar.gz-Datei extrahieren? In dieser Frage habe ich den Vorgang zum Extrahieren von Dateien aus einem Teer gefunden, aber als ich dort den genannten Befehl ausprobierte, kam der Fehler:
$ tar --extract --file={test.tar.gz} {extract11}
tar: {test.tar.gz}: Cannot open: No such file or directory
tar: Error is not recoverable: exiting now
Wie extrahiere ich dann eine Datei aus tar.gz
?
Antworten:
Sie können auch verwenden
tar -zxvf <tar filename> <file you want to extract>
Sie müssen den Dateinamen genau so schreiben, wie
tar ztf test.tar.gz
es angezeigt wird. Wenn dort zB./extract11
odersome/bunch/of/dirs/extract11
steht, müssen Sie dies angeben (und die Datei wird genau unter diesem Namen angezeigt, die benötigten Verzeichnisse werden automatisch erstellt).-x
: weist tar an, Dateien zu extrahieren.-f
: Gibt den Dateinamen / Tarballnamen an.-v
: Ausführlich (Fortschritt beim Extrahieren von Dateien anzeigen).-z
: Archiv über gzip filtern, zum Dekomprimieren von .gz-Dateien verwenden.quelle
$ tar -zxvf test.tar.gz extract11
tar: extract11: Not found in archive
tar: Error exit delayed from previous errors
tar tf archive.tar.gz | grep extract11
.bitte prüfe ob extract11 im archiv ist oder nichttar ztf test.tar.gz
es angezeigt wird. Wenn dort zB./extract11
odersome/bunch/of/dirs/extract11
steht, müssen Sie dies angeben (und die Datei wird genau unter diesem Namen angezeigt, die benötigten Verzeichnisse werden automatisch erstellt).-z
Option funktioniert in einigen Unix-Versionen wie HP-UX nicht.f
muss nicht am Ende sein. Es muss aber direkt der Dateiname folgen. In diesem Beispiel wird mit allen anderen Optionen , die nach dem Teer Namen funktioniert:tar -f mytar.tar.gz -zxv dir/somefile
. Es extrahiert "dir / somefile" aus "mytar.tar.gz".Angenommen, Sie haben einen Tarball mit dem Namen
lotsofdata.tar.gz
und wissen, dass eine Datei vorhanden ist, die Sie verwenden möchten. Sie können sich jedoch nur daran erinnern, dass der Name das Wort enthältcontract
. Sie haben zwei Möglichkeiten:Verwenden Sie entweder
tar
und,grep
um den Inhalt Ihres Tarballs aufzulisten, damit Sie den vollständigen Pfad und Namen aller Dateien herausfinden können, die mit dem Teil übereinstimmen, das Sie kennen, undtar
extrahieren Sie dann die eine Datei, wenn Sie die genauen Details kennen, oder verwenden Sie zwei Mit den wenig bekannten Schaltern können Sie einfach alle Dateien extrahieren, die mit dem Wenig übereinstimmen, das Sie über Ihren Dateinamen wissen. Für diese Option müssen Sie weder den vollständigen Namen noch einen Teil des Pfads kennen. Die Details sind:Option 1
Dies listet die Details aller Dateien auf, deren Namen Ihren bekannten Teil enthalten. Dann extrahieren Sie was Sie wollen mit:
Möglicherweise müssen Sie
./
vor Ihrem Pfad, damit es funktioniert.Option 2
Bis zu Ihnen, die Sie leichter oder am nützlichsten finden.
quelle
tar -xzf lotsofdata.tar.gz <full path and filename from your list above>
arbeitete für mich, ohne./
zu Beginn des vollständigen Pfades zu geben--wildcards
Option nicht. Ich konnte mich immer noch ähnlich verhalten-x -O *foo
.*foo
war in meinem Fall der Dateiname glob, da ich wusste, dass die Datei mit foo endet.Ich habe neulich versucht, ein paar hundert Dateien aus einem Archiv mit Tausenden von Dateien zu extrahieren. Auf die von mir benötigten Dateien kann nicht mit einem einzigen Platzhalter verwiesen werden. Also habe ich gegoogelt und diese Seite gefunden.
Keiner der oben genannten Tricks scheint jedoch für meine Aufgabe gut zu sein. Am Ende las ich den Mann und fand diese Option
--files-from
. Meine endgültige Lösung ist alsound es funktioniert wie ein Zauber.
Update: Die Listendatei sollte dasselbe Format haben, das Sie von sehen würden
tar -tvf
, sonst könnten Sie keine Dateien extrahieren.quelle
Ihr Beispiel funktioniert für mich, wenn Sie die Klammern weglassen
Wenn sich Ihre Datei extract11 in einem Unterordner befindet, sollten Sie den Pfad innerhalb des Tarballs angeben.
quelle
$ tar --extract --file=test.tar.gz extract11
tar: extract11: Not found in archive
tar: Error exit delayed from previous errors
Nachfolgend finden Sie Beispiele zum Extrahieren bestimmter Dateien aus der Datei tar.gz.
Aus lokaler Datei:
Von entfernter URL:
quelle