Wie kann ich die EXIF-Informationen rekursiv aus mehreren tausend JPG-Dateien entfernen?
quelle
Wie kann ich die EXIF-Informationen rekursiv aus mehreren tausend JPG-Dateien entfernen?
Die anderen ExifTool-Vorschläge eignen sich hervorragend, wenn Sie bestimmte Abschnitte entfernen oder ändern möchten. Wenn Sie jedoch nur alle Metadaten vollständig entfernen möchten, gehen Sie wie folgt vor (von der Manpage):
exiftool -all= dst.jpg
Delete all meta information from an image.
Sie können auch jhead mit dem Flag -de verwenden:
-de Delete the Exif header entirely. Leaves other metadata
sections intact.
Beachten Sie, dass EXIF in beiden Fällen nur eine Art von Metadaten ist. Möglicherweise sind andere Metadatenabschnitte vorhanden, und je nachdem, was Sie tun möchten, haben beide Programme unterschiedliche Optionen, um einige zu erhalten oder alle zu entfernen. Zum Beispiel werden jhead -purejpg
alle Informationen entfernt, die zum Rendern des Bildes nicht benötigt werden.
Das EXIF-Bearbeitungstool exiv2
verfügt über einen Befehl zum Löschen von EXIF-Daten:
exiv2 rm image.jpg
Entfernt alle EXIF-Daten aus dem Bild.
Verwenden Sie, um EXIF-Daten aus allen JPEG-Bildern im aktuellen Verzeichnis zu entfernen
exiv2 rm *.jpg
Verwenden Sie zum rekursiven Entfernen von EXIF-Daten aus allen JPEG-Bildern im aktuellen Verzeichnis und allen Unterverzeichnissen davon Folgendes:
find . -type f -iname '*.jpg' | xargs exiv2 rm
Es ist eine gute Idee, den Befehl vorher zu testen.
So sehen Sie, welche Dateien gefunden werden:
find . -type f -iname '*.jpg' | less
So sehen Sie, welche Befehle ausgeführt werden:
find . -type f -iname '*.jpg' | xargs echo exiv2 rm | less
Beachten Sie das echo
zuvor eingefügte exiv2
, um den Befehl zu drucken, anstatt ihn auszuführen.
Sie sollten sich einige OpenSource-Tools wie exiftool ansehen . Es gibt viele Optionen (zB xmp, iptc).
exiftool -overwrite_original \
-xmp:Creator='votre nom' \
-xmp:WebStatement='http://creativecommons.org/licenses/by-nc-nd/3.0/' \
-xmp:Rights='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
-iptc:By-line='votre nom' \
-iptc:CopyrightNotice='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
-exif:Artist='votre nom' \
-exif:Copyright='Copyright votre nom. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works 3.0 License.' \
votre_fichier.jpg
Das einzige, was Sie als nächstes tun sollten, ist, ein winziges Skript zu schreiben, das Ihre Dateien (jpg) auflistet und die Dinge erledigt. Um den Inhalt eines Feldes zu entfernen, müssen Sie es auf "^" setzen. wie das folgende Beispiel:
-Software= ^
-ModifyDate= ^
-CreatorTool= ^
-MetadataDate= ^
-Rating= ^
-ImageNumber= ^
-WhiteBalance= ^
-Temperature= ^
-Tint= ^
-IncrementalTemperature= ^
-IncrementalTint= ^
-Exposure= ^
-Shadows= ^
-Brightness= ^
-Contrast= ^
-Saturation= ^
-Sharpness= ^
-LuminanceSmoothing= ^
-ColorNoiseReduction= ^
-ChromaticAberrationR= ^
-ChromaticAberrationB= ^
-VignetteAmount= ^
-VignetteMidpoint= ^
-ShadowTint= ^
-RedHue= ^
-RedSaturation= ^-GreenHue= ^
-GreenSaturation= ^
-BlueHue= ^
-BlueSaturation= ^
-FillLight= ^
-Vibrance= ^
-HighlightRecovery= ^
-Clarity= ^
-Defringe= ^
-HueAdjustmentRed= ^
-HueAdjustmentOrange= ^
-HueAdjustmentYellow= ^
-HueAdjustmentGreen= ^
-HueAdjustmentAqua= ^
-HueAdjustmentBlue= ^
-HueAdjustmentPurple= ^
-HueAdjustmentMagenta= ^
-SaturationAdjustmentRed= ^
-SaturationAdjustmentOrange= ^
-SaturationAdjustmentYellow= ^
-SaturationAdjustmentGreen= ^
-SaturationAdjustmentAqua= ^
-SaturationAdjustmentBlue= ^
-SaturationAdjustmentPurple= ^
-SaturationAdjustmentMagenta= ^
-LuminanceAdjustmentRed= ^
-LuminanceAdjustmentOrange= ^
-LuminanceAdjustmentYellow= ^
-LuminanceAdjustmentGreen= ^
-LuminanceAdjustmentAqua= ^
-LuminanceAdjustmentBlue= ^
-LuminanceAdjustmentPurple= ^
-LuminanceAdjustmentMagenta= ^
-SplitToningShadowHue= ^
-SplitToningShadowSaturation= ^
-SplitToningHighlightHue= ^
-SplitToningHighlightSaturation= ^
-SplitToningBalance= ^
-ParametricShadows= ^
-ParametricDarks= ^
-ParametricLights= ^
-ParametricHighlights= ^
-ParametricShadowSplit= ^
-ParametricMidtoneSplit= ^
-ParametricHighlightSplit= ^
-SharpenRadius= ^
-SharpenDetail= ^
-SharpenEdgeMasking= ^
-ConvertToGrayscale= ^
-ToneCurveName= ^
-CameraProfile= ^
-HasSettings= ^
-CropTop= ^
-CropLeft= ^
-CropBottom= ^
-CropRight= ^
-CropAngle= ^
-CropWidth= ^
-CropHeight= ^
-CropUnit= ^
-HasCrop= ^
-AlreadyApplied= ^
-ToneCurve= ^
-CameraProfile= ^
-ApplicationRecordVersion= ^
Vincents Vorschlag, exiftool zu verwenden, ist gut. Ich schlage vor, Sie schreiben ein Skript, das ein einzelnes Argument eines Dateinamens akzeptiert und darauf die gewünschten Strip-Funktionen ausführt. Verwenden Sie dann find
, um dieses Skript in Ihrem Dateisatz auszuführen. Das Skript würde ungefähr so aussehen:
#!/bin/sh
exiftool -overwrite_original -ExifFieldName=^ [-MoreExifFieldNames=^] $1
Angenommen, Sie speichern dies als /usr/local/bin/strip_exif.sh
. Sie können es dann aufrufen, indem Sie in den Ordner gehen, in dem Ihre JPEG-Dateien wie folgt gespeichert sind:
find -type f -iname '*.jpg' -exec strip_exif.sh {} \;
Bearbeiten: Nachdem Sie die Antwort von mattdm zu dem Argument für das Striping aller Tags gesehen haben, können Sie das Skript überspringen und die Suche wie folgt verwenden:
find -type f -iname '*.jpg' -exec exiftool -all= {} \;