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 25/02/2011, à 23:16

Regenesis

Commande shell pour renommer des photos

Bonjour,

Voilà, j'ai récupéré un très grand nombre de photos de dermatologie, classées dans des dossiers par année, avec un titre du type :
aa x patho (y).jpg
aa = 2 derniers chiffres de l'année
x = numéro de la photo
patho = nom de la pathologie
(y) = facultatif, présent lorsqu'il s'agit d'une série de photos pour un même sujet, "y" permet de numéroter les photos

J'aimerai les rendre disponible sur une galerie web, mais pour cela il me faut les renommer de la façon suivante :
patho z (y).jpg
z = numéro de la série, lorsqu'il y a plusieurs séries

Je pense qu'une commande shell toute bête pourrait régler vite fait le problème (à la main c'est inenvisageable) , mais je n'ai pas vraiment les compétences... sad
Si une bonne âme pouvait m'aider, je lui en serais gré smile

Merci beaucoup!

Hors ligne

#2 Le 25/02/2011, à 23:52

FRUiT

Re : Commande shell pour renommer des photos

Donne un exemple concret s'il te plait, de nom original (copié-collé, en changeant quelques lettres si besoin), ainsi qu'un exemple concret de résultat que tu souhaites obtenir à partir de cet original.


Neon Suite by FRUiT (kde4.6) [url]http://[Merci de relire les règles]/yzm7cee[/url]
"Pour la carotte, le lapin est la plus parfaite incarnation du mal" (R. Sheckley)
clean

Hors ligne

#3 Le 25/02/2011, à 23:58

Regenesis

Re : Commande shell pour renommer des photos

Alors, par exemple :

En 2009, une série de 10 photos de poikilodermie, dont voici la 7ème, qui devrait être renommée ainsi :
09 0003 poikilodermie (7).JPG => poikilodermie (7).JPG

Mais s'il existe une seconde série de poikilodermie en 2011, il faudrait que :
09 0003 poikilodermie (7).JPG => poikilodermie 1 (7).JPG
et
11 0276 poikilodermie (7).JPG => poikilodermie 2 (7).JPG
de manière à éviter les doublons.

J'espère que c'est plus clair !

Hors ligne

#4 Le 26/02/2011, à 00:58

superzlam

Re : Commande shell pour renommer des photos

Tu dois l exécuter dans le dossier racine ou se trouve l arborescence de tes photos, c est juste une ébauche je n ai rien testé, à mon avis c est correct. Tiens moi au courant.

PS: je débute en perl à tes risques et périls lol

#!/usr/bin/perl
@dossiers=`find . -maxdepth 1 -regex '.*\.jpg$'`;#récupération de tous les jpg dans une liste
my %patho;#liste des pathologie déjà rencontrée
`mkdir galerieWeb`;#création du dossier ou les photo seront copiée
for($i=0;$i<@dossiers;$i++){
    $dossier[$i]=~/(\.(\/\w+\/)+)(\d{2})(\d+)(\w+)(\d+)/;#extraction des élement du nom grace à l expr reguliere
        if(exists %patho{$4}){ #si la patho est deja ds la table on increment le num de la série
            $patho{$4}++;
        }else{
            $patho{$4}=1;#sinon on crée une nvlle entré
        }
    `mv $dossier[$i] ../galerieWeb/$4.$patho{$4}.$5.".jpg"` #on copie l image avec le nv nom ds le dossier
}

Hors ligne

#5 Le 26/02/2011, à 03:11

Bazoo

Re : Commande shell pour renommer des photos

Tu peux écrire un script bash assez facilement mais si tu veux quelques chose de plus avancé tu peux essayer pyRenamer (en graphique par contre)

Hors ligne

#6 Le 26/02/2011, à 09:18

Regenesis

Re : Commande shell pour renommer des photos

@superzlam : merci pour ton script !!
Alors, il me renvoie l'erreur suivante :

[regenesis@regenesis-desktop:~/temp]$ sh temp.sh 
temp.sh: 2: .@dossiers=: not found
temp.sh: 3: my: not found
temp.sh: 5: Syntax error: Bad for loop variable

@Bazzo : je vais aussi creuser du côté de pyRenamer, merci wink

Hors ligne

#7 Le 26/02/2011, à 16:06

superzlam

Re : Commande shell pour renommer des photos

voila je l ai testé chez moi et il fonctionne. tu le met ds le repertoire racine tu fais un chmod u+x sur le script, puis tu l execute avec ./nomduscript. J espere avoir bien compris ce que tu voulais, ne t inquiete pas j ai fait en sorte qu il copie les photo puis les renomme, comme ça tu ne perd rien.

#!/usr/bin/perl
$ext="\.jpg\$";
@dossiers=`find . -maxdepth 2 -regex \.*$ext`;#récupération de tous les jpg dans une liste
my %patho;#liste des pathologie déjà rencontrée
$pwd=`pwd`;
`mkdir galerie`;
chomp $pwd;
$pwd=$pwd."\/galerie";
for($i=0;$i<@dossiers;$i++){
    chomp $dossiers[$i];
    $dossiers[$i]=~/\.\/(\w+\/)*\s*(\d{2})\s*(\d+)\s*(\w+)\s*(\d*)/;#extraction des élement du nom grace à l expr reguliere
    
        if(exists $patho{$4}){ #si la patho est deja ds la table on increment le num de la série
            $patho{$4}++;
        }else{
            $patho{$4}=1;#sinon on crée une nvlle entré
        }
    unless($5 eq ""){ 
        $chem=$1.$2."\\ ".$3."\\ ".$4."\\ ".$5;
    }else{
        $chem=$1.$2."\\ ".$3."\\ ".$4;
    }
    $chem.=".jpg";
    print "chemin ",$chem;    
    $nvNom=$4.$patho{$4}.$5.".jpg";
    $dossiers[$i]=~/\.\/(\w+\/)*\s*((\d{2})\s*(\d+)\s*(\w+)\s*(\d*))/;
    $anNom=$2.".jpg";
    print "\nancien nom : ",$anNom,"\n";
    print "nouveau nom : ",$nvNom,"\n";
    `cp $chem $pwd;cd $pwd;mv $chem $pwd/$nvNom`;
}

Hors ligne

#8 Le 27/02/2011, à 09:02

Regenesis

Re : Commande shell pour renommer des photos

Super, ça marche, merci beaucoup ;-)

Hors ligne