Extrahieren Sie bestimmte Dateien in einem Tar-Archiv mithilfe eines Platzhalters

Extrahieren Sie bestimmte Dateien in einem Tar-Archiv mithilfe eines Platzhalters

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

Dazu habe ich Folgendes versucht:

   tar -xf MyTar.tar *.jpg

aber es schlug fehl (*.jpg nicht gefunden) und schlug mir vor, "--wildcard" zu verwenden. Also versuchte ich

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

Ich habe das getan, aber dann trat derselbe Fehler auf und eine andere Warnung, die mir mitteilte, dass die Option „--wildcard“ nicht eindeutig sei.

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

Antwort1

Am Ende habe ich nach einer guten Pause die Antwort gefunden. Die Option ist WildcardS, Mehrzahl...

Der Befehl

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

hat genau das getan, was ich brauchte.

Antwort2

Setzen Sie Anführungszeichen um das Platzhalterzeichen, "*.jpg"damit die Shell nicht versucht, es zu erweitern, sondern es direkt an tar weiterleitet. Sie möchten, dass tar das Platzhalterzeichen auswertet, nicht die Shell, und das tun die Anführungszeichen.

Antwort3

Für einige ältere Versionen von Tar wird Folgendes extrahiert ausdie "man"-Datei:

Platzhalter für die Dateinamenersetzung können nicht zum Extrahieren von Dateien aus dem Archiv verwendet werden. Verwenden Sie stattdessen einen Befehl der Form:

tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | grep 'pattern' `

verwandte Informationen