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 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

Neko62 #3 a écrit :

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