web-dev-qa-db-fra.com

Comment puis-je rayer de manière récursive les informations exif de toutes les images d'un répertoire?

for i in *.jpg; do echo "Processing $i"; exiftool -all= "$i"; done

J'ai besoin d'adapter cette ligne de code qui supprime toutes les informations exif des images d'un répertoire. J'en ai besoin

  • échoue si le répertoire en cours est vide
  • être récursif pour gérer les sous-répertoires
  • couvrir * .gif * .jpeg * .png ainsi

Quelqu'un pourrait-il me diriger dans la bonne direction?

5
Dave

Il n’est pas nécessaire de créer un script pour cela, ExifTool peut le faire lui-même et ce sera beaucoup plus rapide que de parcourir en boucle des éléments.
exiftool -r -all= -ext jpg -ext gif -ext png /path/to/top/directory/

-r recurse à travers des sous-répertoires
-ext … limiter les fichiers traités aux extensions spécifiées, supprimez ces éléments pour traiter tous les fichiers pour lesquels Exiftool peut supprimer les métadonnées.

10
StarGeek

Depuis exiftool est génial, alors vous n’avez plus besoin de ça, mais vous pouvez en principe faire avec find quelque chose comme ça ...

Commencez par vérifier que votre recherche trouve ce que vous voulez (utilisez -iname pour la rendre insensible à la casse, car .JPG et .jpg etc sont communs).

find . -iname '*.jpg' -or -iname '*.png' -or -iname '*.jpeg' -or -iname '*.gif' 

if affichera une liste des fichiers trouvés avec les chemins commençant ici (y compris les sous-répertoires)

puis répétez en ajoutant la commande pour agir sur les fichiers trouvés à la fin | xargs exiftool -all=

find . -iname '*.jpg' -or -iname '*.png' -or -iname '*.jpeg' -or -iname '*.gif' | xargs exiftool -all=

ou plus sûr si les noms de fichiers ont des espaces, utilisez null comme délimiteur au lieu d'espaces:

find . -iname '*.jpg' -print0 -or -iname '*.png' -print0 -or -iname '*.jpeg' -print0 -or -iname '*.gif' -print0 | xargs --null exiftool -all=

Si rien ne correspond (par exemple le répertoire est vide) alors il ne fait rien

. est le répertoire de travail actuel. Si vous n'êtes pas là, remplacez find . par find /path/to/parent/directory

1
Zanna