#1 Le 18/08/2017, à 11: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 . Peut-on m'aider ?
Merci
CPoilâne
Dernière modification par C.Poilane (Le 18/08/2017, à 17:09)
Hors ligne
#2 Le 18/08/2017, à 11: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, à 17: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, à 11:11)
Hors ligne
#4 Le 18/08/2017, à 17: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, à 20:13)
Hors ligne
#5 Le 19/08/2017, à 11: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