tar-Befehl - So extrahieren Sie eine Datei in ein bestimmtes Verzeichnis

10769
ring bearer

Gibt es eine Möglichkeit, eine einzelne Datei aus einer TAR-Datei in ein bestimmtes Verzeichnis zu extrahieren? In der Tat beschäftige ich mich mit einer .tgzDatei, also versuche ich so etwas:

gunzip -c mytargzfile.tgz | tar xvf - path/to/myfile -C /tmp

Um einen Dateieintrag path/to/myfilein mytargzfile.tgzdas /tmpVerzeichnis zu extrahieren .

Dieser Befehl schlägt jedoch fehl, da sich tar beschwert, dass er die Datei mit dem Namen -Cund /tmpim Archiv nicht finden kann . Ich habe -Cvorher versucht, die Option zu wechseln, xvfund es hat auch nicht geholfen.

Beachten Sie, dass ich AIX und KSH verwende

2
Kannst du nicht einfach die -z-Datei auf tar verwenden und den Gunzip-Schritt überspringen? -z weist tar an, es als komprimiertes Archiv zu behandeln. Sie hätten also "tar -xzvf mytargzfile.tgz -T path / to / myfile / tmp" peelman vor 13 Jahren 0
Die unter AIX standardmäßige Version von tar verfügt nicht über die Option -z. ring bearer vor 13 Jahren 0

2 Antworten auf die Frage

1
RedGrittyBrick

Ich denke, dass die C-Option für tar früher im Befehl vorkommen sollte

tar -cvf - -C /tmp path/to.myfile 

Ich könnte mir vorstellen, dass Sie GNU tar herunterladen, kompilieren und in Ihr ~ / bin installieren könnten, was die Sache ein bisschen einfacher machen könnte .

Außerdem müssen Sie "-c" verwenden, um die Standardmodusoptionen zu verwenden. Mit "c" wird die Befehlszeile im BSD-Modus analysiert, der "-C" nicht unterstützt. Gilles vor 13 Jahren 0
1
Karl Bielefeldt

Dieser Befehl funktionierte gut für mich, wie Sie sagten, Sie mit dem versuchten -Czuerst: tar -C /tmp -xvf. Vielleicht ist es ein Fehler in Ihrer Teer-Version?

Ein bisschen klobig, aber es gibt immer:

cd /tmp gunzip -c /path/to/mytargzfile.tgz | tar xvf - path/to/myfile 

Ich empfehle, GNU tar für sich selbst zu installieren. Es lohnt sich nur für die Optionen -jund -zwenn nichts anderes, und es ist eines der ersten Dinge, die ich immer in einem neuen Unix-Konto mache.