2016-08-31 3 views
0

Ich versuche, einen spezifischen Metadaten-Inhalt wie "Odeon" in meinen * .jpg-Dateien mit Hilfe von exiftool.exe zu finden und dann dieses spezifische Tag aus der Datei zu löschen.Wie finde ich bestimmte Metadaten und lösche sie aus Bildern?

Ich kann nicht „Odeon“ mit dem Befehl

exiftool -if "$keywords =~ /Odeon/" . 

Ich weiß, dass es da ist, für dieses Beispiel findet, wird der Inhalt in dem Tag „Location“ gespeichert ist.

Kann mir jemand bitte sagen, Howto
a) finden die Inhalte, wo es in einem * gespeichert werden .jpg
b) löschen genau dieser Tag aus dieser Datei gefunden (ohne Sicherung der Datei)?

Antwort

1

Der Grund, dass Ihr Befehl nicht funktioniert, liegt darin, dass Sie nur das Stichwörter-Tag überprüfen. Die Position ist ein anderes Tag und Sie würden dort nach dieser Information suchen.

Leider ist Exiftool nicht in der Lage, nur die Tags mit übereinstimmenden Daten aufzulisten. Sie können die Ausgabe über ein anderes Befehlszeilenprogramm wie Find (da Sie unter Windows sind) oder Grep (andere Plattformen) pipen. In diesem Fall würde Ihre Befehlszeile wie folgt aussehen:
exiftool -g1 -a -s FileOrDir | Find "Odeon"
Das würde alle Tags auflisten, die Ihre Informationen haben.

Nachdem Sie den Tag gefunden, könnte man es dann entfernen, ohne mit diesem Befehl eine Sicherungsdatei mit dem TAG ersetzt mit dem Namen des Tags:
exiftool -overwrite_original -TAG= FileOrDir
Beachten Sie, dass dieser Befehl den Tag entfernen würde aus allen Dateien, wenn Sie ein Verzeichnis angeben. Wenn Sie selektiver sein möchten und das Tag NUR den Text "Odeon" enthält, können Sie diesen Befehl verwenden. Beachten Sie, dass bei diesem Befehl zwischen Groß- und Kleinschreibung unterschieden wird. Es würde "oDeON" oder andere Variationen nicht entfernen: exiftool -overwrite_original -TAG-="Odeon" FileOrDir
Wenn Sie ein bestimmtes Tag entfernen möchten, das "Odeon" als Teil einer längeren Zeichenfolge enthält und nicht zwischen Groß- und Kleinschreibung unterscheidet, können Sie die Option -if hinzufügen.
exiftool -overwrite_original -if "$TAG=~/odeon/i" -TAG= FileOrDir

Schließlich gibt es die Schrotflinte Ansatz mit der -api "Filter=…" Option. Dies erfordert Version 10.05 oder höher. Dieser Befehl:
exiftool -overwrite_original -api "Filter=s/odeon//gi" -tagsfromfile @ -all:all FileOrDir
würde "odeon" (case insensitive) von allen Tags in der Datei entfernen. Es würde das Tag nicht entfernen und wenn Odeon Teil einer längeren Zeichenfolge wäre, würde der Rest der Zeichenfolge bleiben. Wenn Location beispielsweise "Odeon" entspricht, wird es zu einer leeren Zeichenfolge. Wenn Beschreibung "Dies ist Odeon" wäre, würde es "Das ist". Der Teil nach "Filter =" ist eine Perl-Regex-Substitution und Sie könnten sie weiter verfeinern, indem Sie in Regex suchen.

+0

Wenn ein einzelnes Tag mehrere, getrennte Wörter wie "Odeon, London, UK, Europa" enthält und ich Ihren letzten Ansatz verwende, bekomme ich ", London, UK, Europe" mit einem führenden Komma (oder was auch immer das Trennzeichen war) . Wie kann ich den gesamten Odeon-Teil inklusive Trennzeichen löschen, so dass nur "London, UK, Europe" übrig bleibt? – PeterCo

+1

Es hängt davon ab, was dieses Tag ist. Es klingt so, als wäre dieses Tag ein List-Type-Tag wie Keywords oder Subject (beides sind Tags, die zum Speichern von Keywords verwendet werden). Wenn dies der Fall ist, hinterlässt es einen leeren Eintrag im Tag und die Option "api Filter" ist nicht das, was Sie verwenden möchten. Versuchen Sie diesen Befehl zuerst 'exiftool -overwrite_original -ALL- = Odeon FileOrDir' und sehen, ob das für Sie funktioniert. – StarGeek

Verwandte Themen