Extrahieren Sie bestimmte Dateien in einem Teerarchiv mithilfe eines Platzhalters


18

Ich versuche ein Skript zu erstellen, um nur JPEG-Bilder aus einem Archiv zu extrahieren, das viele Arten von Dateien enthält.

Dazu habe ich versucht:

   tar -xf MyTar.tar *.jpg

aber es ist fehlgeschlagen (* .jpg nicht gefunden) und ich sollte "--wildcard" verwenden. Also habe ich es versucht

tar -xf MyTar.tar --wildcard *.jpg

Ich habe das getan, aber dann der gleiche Fehler und eine andere Warnung, die mir sagt, dass die Option "--wildcard" nicht eindeutig ist.

Ich habe die Manpages für Teer durchgesehen, aber keinen Hinweis auf das Problem gefunden.


Welcher Teer und welche Version? Fügen Sie die Ergebnisse vontar --version
smci

Antworten:


32

Am Ende fand ich dann nach einer guten Pause eine Antwort. Die Option ist Platzhalter s , Plural ...

Also der Befehl

tar -xf MyTar.tar --wildcards "*.jpg"

tat genau das, was ich brauchte.


3

Setzen Sie solche Anführungszeichen um den Platzhalter, "*.jpg"damit die Shell nicht versucht, ihn zu erweitern, sondern ihn direkt an tar weiterleitet. Sie möchten, dass tar den Platzhalter auswertet, nicht die Shell, und die Anführungszeichen tun dies.


0

Für einige ältere Versionen von tar wird Folgendes aus der "man" -Datei extrahiert :

Platzhalter für die Ersetzung von Dateinamen können nicht zum Extrahieren von Dateien aus dem Archiv verwendet werden. Verwenden Sie stattdessen einen Befehl des Formulars:

tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | grep 'pattern' `
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.