OVH Cloud OVH Cloud

renommer une masse de fichier

7 réponses
Avatar
Elleuch Amine
bonjour,

j'ai un dossier contenant des fichiers avec des nom différents.
existe-t-ilune commande qui permet de nenommer tous les fichiers d'un
manière uniforme (genre image1.jpg, image2.jpg, etc)

merci d'avance

7 réponses

Avatar
Rakotomandimby Mihamina
Elleuch Amine wrote:
bonjour,


Bonjour

http://lea-linux.org/dev/shell_script.html

merci d'avance
de rien


--
Rakotomandimby Mihamina Andrianifaharana
Tel : +33 2 38 76 43 65
http://stko.dyndns.info/site_principal/Members/mihamina

Avatar
Denis
Elleuch Amine wrote:

bonjour,

j'ai un dossier contenant des fichiers avec des nom différents.
existe-t-ilune commande qui permet de nenommer tous les fichiers d'un
manière uniforme (genre image1.jpg, image2.jpg, etc)

merci d'avance
Salut !


Tu peux essayer krename ( http://www.krename.net/ ), qui permet de renommer
des centaines, voire plus, de fichiers d'un coup, avec des expressions
régulières, des numéros, et plein d'autres options. Il fonctionne très bien
sous KDE, je ne sais pas s'il fonctionne sous d'autres interface graphique.

Denis

Avatar
beebee
Le Mon, 21 Jun 2004 14:59:10 +0200, Elleuch Amine a écrit :

bonjour,

j'ai un dossier contenant des fichiers avec des nom différents.
existe-t-ilune commande qui permet de nenommer tous les fichiers d'un
manière uniforme (genre image1.jpg, image2.jpg, etc)

merci d'avance


bonjour


Pour les images, il y a l'excellent logiciel français
xnview!
Possibilité de rester en mode console aussi:)

http://www.xnview.com/

A+

Avatar
Roger That
bonjour,

j'ai un dossier contenant des fichiers avec des nom différents.
existe-t-ilune commande qui permet de nenommer tous les fichiers d'un
manière uniforme (genre image1.jpg, image2.jpg, etc)


Quelle est ton format d'entrée et ton format de sortie ? Tes fichiers se
trouvent-ils dans des répertoires différents ?

Je dirais bash et une boucle "for", et peut-être "find".

Avatar
Jacques
Denis wrote:
Elleuch Amine wrote:


bonjour,

j'ai un dossier contenant des fichiers avec des nom différents.
existe-t-ilune commande qui permet de nenommer tous les fichiers d'un
manière uniforme (genre image1.jpg, image2.jpg, etc)

merci d'avance


Salut !

Tu peux essayer krename ( http://www.krename.net/ ), qui permet de renommer
des centaines, voire plus, de fichiers d'un coup, avec des expressions
régulières, des numéros, et plein d'autres options. Il fonctionne très bien
sous KDE, je ne sais pas s'il fonctionne sous d'autres interface graphique.


A partir du moment où les libs de kde et de qt sont installées sur le
système, qu'on soit sous gnome, xfce ou motif, le prog fonctionnera
correctement.

Jacques


Denis



Avatar
Elleuch Amine
Roger That wrote:

bonjour,

j'ai un dossier contenant des fichiers avec des nom différents.
existe-t-ilune commande qui permet de nenommer tous les fichiers d'un
manière uniforme (genre image1.jpg, image2.jpg, etc)



Quelle est ton format d'entrée
un nom quelconque


et ton format de sortie ?
imagexxxx.jpg

Tes fichiers se
trouvent-ils dans des répertoires différents ?

nono

Je dirais bash et une boucle "for", et peut-être "find".


merci les copains. J'ai résolu mon problème avec la commande

x=1;for i in *; do mv $i image$x.jpg;let x=x+1; done


Avatar
David LE BOURGEOIS
merci les copains. J'ai résolu mon problème avec la commande

x=1;for i in *; do mv $i image$x.jpg;let x=x+1; done


Dans ce cas, il faut faire attention à ne pas avoir de sous-répertoires,
à ne pas avoir de fichiers déjà nommés image*.jpg, et donc à ne pas
lancer la moulinette deux fois de suite.

Une solution serait de déplacer les fichiers au fur et à mesure dans un
répertoire vide pour éviter les conflits.

Sinon, si l'on veut rester dans le même répertoire, on peut s'en sortir
avec un coup de Perl :

---8<------------
#!/usr/bin/perl -w

use strict;
use File::Basename;

my $IND = 3;

foreach my $file (<$ENV{PWD}/*>) {
next unless -f $file;
my ($base, $path, $ext) = (fileparse $file, '..*');
my $num = 0;
do { next if $file eq $path . sprintf("%0${IND}d", ++$num) . $ext }
while(-e $path . sprintf("%0${IND}d", $num) . $ext);
printf "[%s%s] => [%0${IND}d%s] ... ", $base, $ext, $num, $ext;
if(rename $file, $path . sprintf("%0${IND}d", $num) . $ext)
{ print "okn" } else { print "erreurn" }
}
---8<------------

Mais il doit surement y avoir plus simple.

--
David LE BOURGEOIS