OVH Cloud OVH Cloud

"rename"

8 réponses
Avatar
Maxime Petit-laposte.net
Salut,
je souhaite renommer tout les fichiers d'un répertoire.
après avoir cherché sur le net, je sais tout faire, sauf ce qui m'intéresse.

Je veux juste rajouter des caractères (les mêmes) au début des noms des
fichiers:

01.xyz
02.xyz

deviennent:

le_fichier_01.xyz
le_fichier_02.xyz

"rename" doit pouvoir faire ça très bien avec quelque chose du genre
+ (pour ajouter)
* (pour modifier tous les fichiers du répertoire)
mais je ne sais pas quel est l'ordre à donner à tout ça.

Merci
Max

ps: dans les pages man ils parlent de langage Perl pour les scripts de
"rename".
est ce que toutes les lignes de commandes sont en Perl; ou bien cela
dépend-il des fonctions?

si oui, perl est-il accessible aux débutants? (j'ai fais un peu de
fortran et de programmation machine dans une vie antérieure)


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

8 réponses

Avatar
Sylvain Sauvage
Mardi 8 août 2006, 22:51:48 CEST, Maxime Petit-laposte.net a écrit :

Salut,



'soir,

je souhaite renommer tout les fichiers d'un répertoire.
après avoir cherché sur le net, je sais tout faire, sauf ce qui
m'intéresse.

Je veux juste rajouter des caractères (les mêmes) au début des noms des
fichiers:



mmv sait faire ça (paquet du même nom).

Mais comme je ne m'en sers pas souvent et que je ne veux pas repasser par
la case man, je fais plus simple :

for f in *; do mv $f le_fichier_$f; done

Avec les possibilités regexp du shell, p.ex. bash ${x/y} ${x#y}..., on
peut aussi faire plus complexe.

Pour ce qui est ponctuel ou ce qui n'a pas besoin d'être rapide, le shell
est souvent largement suffisant.

--
Sylvain Sauvage


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
pingouin osmolateur
--- "Maxime Petit-laposte.net"
a écrit :

Salut,


Salut,
je souhaite renommer tout les fichiers d'un
répertoire.
après avoir cherché sur le net, je sais tout faire,
sauf ce qui m'intéresse.

Je veux juste rajouter des caractères (les mêmes) au
début des noms des
fichiers:

01.xyz
02.xyz

deviennent:

le_fichier_01.xyz
le_fichier_02.xyz

"rename" doit pouvoir faire ça très bien avec
quelque chose du genre
+ (pour ajouter)
* (pour modifier tous les fichiers du
répertoire)
mais je ne sais pas quel est l'ordre à donner à tout
ça.

Merci
Max

ps: dans les pages man ils parlent de langage Perl
pour les scripts de
"rename".
est ce que toutes les lignes de commandes sont en
Perl; ou bien cela
dépend-il des fonctions?



Ce sont des expressions regulières utilisés par perl,
php, les même que j'utilise pour parser le nom du
fichier

si oui, perl est-il accessible aux débutants? (j'ai
fais un peu de
fortran et de programmation machine dans une vie
antérieure)



Le perl c'est hyper je trouve pour faire des choses
simples assez facilement. Le petit script suivant doit
faire ce que tu veux enfin j'espère, teste le
C'est pas tres propre mais chez moi ça a l'air de
fonctionner

#!/usr/bin/perl
my $count = 0 ;
opendir(DIR, ".");
@files = grep { /[^.]/ } readdir(DIR);
closedir(DIR);

foreach $file (@files) {
print "$filen";
$count++;
$file =~ /(w+).*(w*)/ ;
if ( $2 ne ""){
my $new_file = "$1_$count.$2" ;
rename($file,$new_file);
}
else {
my $new_file = "$1_$count" ;
rename($file,$new_file);
}

}

Voila ciao
AC







___________________________________________________________________________
Découvrez un nouveau moyen de poser toutes vos questions quelque soit le sujet !
Yahoo! Questions/Réponses pour partager vos connaissances, vos opinions et vos expériences.
http://fr.answers.yahoo.com


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Maxime Petit-laposte.net
MERCI à tous les deux
mmv sait faire ça (paquet du même nom).

Mais comme je ne m'en sers pas souvent et que je ne veux pas repasser par
la case man, je fais plus simple :

for f in *; do mv $f le_fichier_$f; done



super, je me doutais qu'il fallait utiliser "$" mais je ne connaissait
pas "f".
je crois que "." symbolisait les "files" donc cela ne marchait pas;
evidement.

Avec les possibilités regexp du shell, p.ex. bash ${x/y} ${x#y}..., on
peut aussi faire plus complexe.




il semblerait...
Pour ce qui est ponctuel ou ce qui n'a pas besoin d'être rapide, le shell
est souvent largement suffisant.





je n'en revient pas de la puissance de la ligne de comande...
je comence àl'utiliser régulièrement et c'est top.

bye,
Max


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Maxime Petit-laposte.net
Max a écrit :
2006/8/9, Maxime Petit-laposte.net :

>
>
super, je me doutais qu'il fallait utiliser "$" mais je ne connaissait
pas "f".



???

"f" c'est une variable quelconque, comme ça aurait pu être "i" ou "fic"



donc

for u in *; do mv $u le_fichier_$u; done

devrait marcher aussi?

merci
Max


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Max
2006/8/9, Maxime Petit-laposte.net :

> for f in *; do mv $f le_fichier_$f; done
>
super, je me doutais qu'il fallait utiliser "$" mais je ne connaissait
pas "f".



???

"f" c'est une variable quelconque, comme ça aurait pu être "i" ou "fic"

--
Max
Avatar
Max
Le 09/08/06, Maxime Petit-laposte.net a écrit :

> "f" c'est une variable quelconque, comme ça aurait pu être "i" ou " fic"
>
donc

for u in *; do mv $u le_fichier_$u; done

devrait marcher aussi?



oui

--
Max
Avatar
Charles Plessy
Le Tue, Aug 08, 2006 at 10:51:48PM +0200, Maxime Petit-laposte.net a écrit :

Je veux juste rajouter des caractères (les mêmes) au début des noms des
fichiers:

01.xyz
02.xyz

deviennent:

le_fichier_01.xyz
le_fichier_02.xyz



Bonjour,

en effet, « rename » est un bon candidat pour cette tâche.

Il dispose d'un option -n qui permet de simuler l'opération, ce qui est
bien pratique pour éviter les catastrophes (comme renommer tous ses
fichiers avec le même nom.

kunpuu|charles|$ rename -n s/^/le_ficher_/ *xyz
01.xyz renamed as le_ficher_01.xyz
02.xyz renamed as le_ficher_02.xyz

rename prend une expression rationnelle comme argument et l'applique à
tous les noms de fichiers qu'on lui donne.

Les expressions rationnelles de perl sont bien documentées, et on peut
accéder à cette doc par « perldoc perlre » en console. Le programme
lui-même possède une page de manuel, comme tous les programmes
exécutables distribués par Debian.

Bonne journée

--
Charles Plessy
http://charles.plessy.org
Wako, Saitama, Japon


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sylvain Sauvage
Mercredi 9 août 2006, 00:50:33 CEST, Max a écrit :

Le 09/08/06, Maxime Petit-laposte.net a écrit :

> > "f" c'est une variable quelconque, comme ça aurait pu être "i" ou
> > "fic"
> >
> donc
>
> for u in *; do mv $u le_fichier_$u; done
>
> devrait marcher aussi?

oui



La page de man de bash est très bien.
L'imprimer est une bonne idée (64 pages) :
man -t bash > bash.ps

--
Sylvain Sauvage


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact