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.

AdrieanKhisbe
quelle
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.

AdrieanKhisbe
quelle
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.

Nicole Hamilton
quelle
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' `
Ray Peck
quelle