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' `