Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 18/08/2017, à 12:43

C.Poilane

[RESOLU] Chercher et supprimer fichiers xmp (darktable) obsolètes

Bonjour

Quoi : supprimer fichier xmp devenus inutiles
Cible : utilisateurs de darktable (entre autres)
Commande : find, diff, grep, join... ?

INTRO
Darktable crée des fichiers xmp lors du développement de fichier raw.
Pour chaque photo TOTO traitée dans un répertoire donné il y a donc un fichier TOTO.xmp associé.
Lorsque l'on supprime la photo TOTO à la sauvage, TOTO.xmp reste inutilement dans le répertoire.
Dans ce répertoire (et dans toute la base de donnée des photos) il y a finalement des fichiers X non traités ; des fichiers Y et Y.xmp traités ; et des fichiers Z.xmp dont la photo source n'existe plus.

QUESTION
Je voudrais supprimer les fichiers Z.xmp en ligne de commande.

MÉTHODE TESTÉE
Je liste tous les fichiers xmp de ma base de donnée photo dans un fichier A.txt

 find -type f -name "*xmp" > A.txt 

Je réécrit ce fichier sans les extentions .xmp dans un fichier B.txt

grep ".xmp" A.txt | sed -e "s/.xmp//g" > B.txt

Je liste toutes les photos  (extension .NEF dans mon cas) de ma base de donnée photo dans un fichier C.txt

find -type f -name "*NEF" > C.txt

Et là il me reste deux actions :
1- identifier dans le fichier B.txt les lignes qui ne sont pas dans le fichier C.txt (= les photos supprimées)
2- supprimer les fichiers xmp correspondant à ces lignes

C'est l'action 1 sur laquelle je me casse les dents mad. Peut-on m'aider ?


Merci
CPoilâne

Dernière modification par C.Poilane (Le 18/08/2017, à 18:09)

Hors ligne

#2 Le 18/08/2017, à 12:54

pingouinux

Re : [RESOLU] Chercher et supprimer fichiers xmp (darktable) obsolètes

Bonjour,
Déjà, dans ta 2ème commande, le grep est inutile :

sed -e "s/\.xmp$//" A.txt > B.txt

Pour répondre à ta question, tu peux créer un fichier D.txt, identique à C.txt, mais sans les extensions.
Regarde ensuite le manuel de la commande comm, qui est adaptée à ton cas.

Hors ligne

#3 Le 18/08/2017, à 18:07

C.Poilane

Re : [RESOLU] Chercher et supprimer fichiers xmp (darktable) obsolètes

Merci beaucoup pour la correction et la commande.
Ci-dessous une solution qui marche même avec des différences de casse dans les fichiers source.
------------------------------------
Quoi : supprimer fichiers xmp devenus obsolètes
Cible : utilisateurs de darktable (entre autres)
Commande : find, sed, comm, cat

Je liste et trie vers un fichier xmp.txt tous les fichiers xmp de ma base de donnée photo

find -type f -iname "*xmp" | sort > xmp.txt 

Je duplique ce fichier sans les extensions .xmp

sed -e "s/\.xmp$//" xmp.txt > xmp_sans_extension.txt

Je liste et trie vers un fichier raw.txt toutes les photos de ma base de donnée photo (extension .NEF dans mon cas)

find -type f -iname "*NEF" | sort  > raw.txt

Je compare ces fichiers pour détecter les .xmp qui ne sont pas associés à une photo

comm -13 raw.txt xmp_sans_extension.txt > fichiers_a_supprimer.txt

Je remets l'extension .xmp

sed -i 's/$/.xmp/' fichiers_a_supprimer.txt

Je supprime les .xmp obsolètes détectés

cat fichiers_a_supprimer.txt | xargs rm

Dernière modification par C.Poilane (Le 19/08/2017, à 12:11)

Hors ligne

#4 Le 18/08/2017, à 18:17

pingouinux

Re : [RESOLU] Chercher et supprimer fichiers xmp (darktable) obsolètes

comm -13 raw.txt xmp_sans_extension.txt > fichiers_a_supprimer.txt

En procédant ainsi, tu n'auras aucune ligne commune entre raw.txt et xmp_sans_extension.txt (extensions dans le premier, et pas dans le second). Tu risques de supprimer tous les .xmp.

Ajouté :
D'autre part, tu ne traiteras que les fichiers dont l'extension .xmp est en lettres minuscules.

Dernière modification par pingouinux (Le 18/08/2017, à 21:13)

Hors ligne

#5 Le 19/08/2017, à 12:11

C.Poilane

Re : [RESOLU] Chercher et supprimer fichiers xmp (darktable) obsolètes

Bonjour et merci

1. Non car Dartktable ajoute l'extension .xmp au nom+extension de la photo source. Donc les lignes de raw.txt et de xmp_sans_extension.txt sont du même type (= nom et extension de la photo initiale).
2. Oui je ne traite que les fichiers dont l'extension .xmp est en minuscules, car je n'ai pas rencontré pour l'instant d'ambiguïté de ce coté. Par contre les nom+extension des photos initiales peuvent être en minuscules ou en majuscule dans mon cas. Je crois que cela provient d'une transition Windows > Linux effectuée il y a bien longtemps.

Hors ligne