#1 Le 26/12/2012, à 17:23
- Neko62
script spécifique de renommage de fichiers
Bonjour à tous,
voilà, je cherche à écrire un script qui permet la chose suivante :
j'ai plusieurs photos archivées dans une arborescence de dossiers Année/Mois/Jour, qui ont fait l’objet pour certaines de retouches avec un ancien outil de retouche.
Chaque photo retouchée est un fichier dupliqué de l'original, retouché ensuite, et renommé ***_rectifié.jpg
Je me retrouve donc avec 2 fichiers JPG ( l'original ex : 1542.jpg et le fichier retouché ex : 1542_rectifié.jpg ), mais uniquement pour les cas de figure des photos que j'ai retouché.
Je souhaiterais faire en sorte que l'explorateur de mon nouvel outil de retouche ne "voit" pas le fichier original quand il existe une version retouchée de mon cliché.
Car actuellement, il m'affiche les 2 images l'une à côté de l'autre car elles ont toutes les 2 l'extension .JPG.
Donc, au final, je souhaiterais :
- scanner l'arborescence Année/Mois/Jour
- quand il trouve un fichier avec la chaine de caractères "_rectifié", il renomme le fichier original correspondant avec une extension type ".SAV" à la place de ".JPG" ( ce qui permet de garder l'original tout en le faisant disparaitre de l'explorateur d'images.
Le script correspondant ne doit pas être très long, mais je ne sais pas comment le construire !
Si quelqu'un à une idée ?
D'avance merci.
Hors ligne
#2 Le 26/12/2012, à 17:32
- pingouinux
Re : script spécifique de renommage de fichiers
Bonjour,
Ceci devrait convenir (à tester) :
shopt -s globstar
for i in **/*_rectifié.JPG; do j="${i/_rectifié/}"; echo mv "$j" "${j%.JPG}.SAV"; done
et enlever le "echo" si c'est bon.
Hors ligne
#3 Le 26/12/2012, à 18:29
- Neko62
Re : script spécifique de renommage de fichiers
merci pingouinux, mais
- je ne comprends pas le contenu de la première ligne "shopt -s globstar"
- quand j'effectue la démarche sous forme de ligne de commande dans un terminal, ça me donne le résultat suivant, qui ne semble pas fonctionner :
nicolas@Amandinois-MS-7641:~$ cd '/home/nicolas/Images/2008'
nicolas@Amandinois-MS-7641:~/Images/2008$ shopt -s globstar
nicolas@Amandinois-MS-7641:~/Images/2008$ for i in **/*_modifié.JPG; do j="${i/_modifié/}"; echo mv "$j" "${j%.JPG}.SAV"; done
mv **/*.JPG **/*.SAV
nicolas@Amandinois-MS-7641:~/Images/2008$
dois-je le mettre dans un fichier text à lancer comme un script ?
quel est le type de code ? du shell ?
Hors ligne
#4 Le 26/12/2012, à 18:41
- pingouinux
Re : script spécifique de renommage de fichiers
je ne comprends pas le contenu de la première ligne "shopt -s globstar"
Voici un extrait de man bash (options de shopt)
globstar
If set, the pattern ** used in a pathname expansion con‐
text will match all files and zero or more directories
and subdirectories. If the pattern is followed by a /,
only directories and subdirectories match.
Est-ce modifié ou rectifié ? Adapter aussi la commande si c'est .jpg au lieu de .JPG
Hors ligne
#5 Le 26/12/2012, à 18:54
- Neko62
Re : script spécifique de renommage de fichiers
c'est "modifié" en fait.
sinon qu'entends-tu par "man bash" comme option de shopt ?
"shopt" est-ce un programme à installer en amont avec synaptic par exemple ?
dois-je mettre ces 2 lignes de code dans un fichier texte executable ?
Hors ligne
#6 Le 26/12/2012, à 19:02
- pingouinux
Re : script spécifique de renommage de fichiers
shopt est une "builtin command" de bash. Il n'y a rien à installer.
Les 2 lignes peuvent être mises dans un script.
Hors ligne
#7 Le 26/12/2012, à 19:35
- Neko62
Re : script spécifique de renommage de fichiers
impeccable ! ca fonctionne !
merci beaucoup.
J'ai encore des doublons sur certains clichés.
Je vais essayer de les supprimer en me basant sur les critères suivants :
- même date de prise de vue à la seconde près
- même taille en pixels
- même taille en octets
seul le nom du fichier change.
Il faudrait que j'arrive à extraire en ligne de commande les données ITPC de l'image pour en faire des critères distinctifs !
Hors ligne
#8 Le 26/12/2012, à 19:50
- pingouinux
Re : script spécifique de renommage de fichiers
Pour voir si 2 fichiers sont identiques
md5sum fichier1 fichier2
Le résultat est le même si les fichiers sont identiques.
Hors ligne
#9 Le 26/12/2012, à 20:19
- Neko62
Re : script spécifique de renommage de fichiers
est-ce qu'un script de ce style fonctionnerai ? :
for i in **/*.JPG
do j="${i}
k="${i+1}
if md5sum "$j" "$k"
echo rm "$j"
endif
done
Hors ligne
#10 Le 26/12/2012, à 20:34
- pingouinux
Re : script spécifique de renommage de fichiers
Ça ne va pas marcher. Voici une piste, pour lister les fichiers dupliqués :
md5sum **/*.JPG | sort | uniq -w 32 -D
Hors ligne
#11 Le 26/12/2012, à 21:13
- Neko62
Re : script spécifique de renommage de fichiers
cette ligne de commande fonctionne en effet,
elle me sort la liste des doublon de la manière suivante :
fead21d110fdc90a8cda785e8f44e987 04/2008-04-17/avril2008 102.jpg
fead21d110fdc90a8cda785e8f44e987 04/2008-04-17/B0000151.jpg
feae9bccb0b23e46d7e43f1bf87200bf 03/2008-03-24/B0000339.jpg
feae9bccb0b23e46d7e43f1bf87200bf 03/2008-03-24/mars2008 045_modifié.jpg
ff4b700d1274ff78b29135d5fe91c5b6 04/2008-04-16/avril2008 052.jpg
ff4b700d1274ff78b29135d5fe91c5b6 04/2008-04-16/B0000220.jpg
cependant je ne vois pas comment supprimer l'un des deux doublons ensuite !
Hors ligne
#12 Le 26/12/2012, à 21:44
- Neko62
Re : script spécifique de renommage de fichiers
J'ai trouvé le logiciel Fslint qui marche du tonner dans ce domaine !
Hors ligne