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 06/11/2015, à 13:24

carreti

Renommer des fichiers : changer dans x fichiers une partie de leur nom

hello,

la question peut paraître basique et pourtant ..,
J'ai toujours trouvé la commande mv dangereuse et j'ai déjà subi quelques déboires en l'utilisant.
Aussi maintenant je préfère visualiser ce qu'elle fait et éviter les grosses catastrophes, en lui ajoutant les options -vi (mv -vi titi toto).
Je pourrais certes, créer un alias mais un mv ça peut toujours servir dans un script. A moins que les scripts n'utilisent pas les alias ?
J'ai eu récemment une petite interrogation, est il possible de faire plus simple, plus sûr, plus efficace ou plus malin pour réaliser l'opération suivante.

« Code.Lyoko.Saison1.Ep24.130391597.mkv » -> « Code.Lyoko.S01.Ep24.130391597.mkv »
« Code.Lyoko.Saison1.Ep24.130391597.nfo » -> « Code.Lyoko.S01.Ep24.130391597.nfo »
« Code.Lyoko.Saison1.Ep25.130391598.mkv » -> « Code.Lyoko.S01.Ep25.130391598.mkv »
« Code.Lyoko.Saison1.Ep25.130391598.nfo » -> « Code.Lyoko.S01.Ep25.130391598.nfo »

Changer dans x fichiers une partie de leur nom.

Personnellement j'ai résolu le truc en faisant :

for f in $(ls *aison*); do mv -vi $f $(echo $f | sed 's/Saison/S0/');done

Ce qui m'a bien pris 1 ou 2 mn (des fois faut y aller calmement wink). Y avait-il mieux à faire ? Comment auriez vous fait ? Merci d'avance pour vos suggestions.

Bisous big_smile

Dernière modification par carreti (Le 06/11/2015, à 13:35)


Utilisateur et administrateur de Linux et d'Unix (depuis le siècle dernier) et plus précisément ces dernières années de  Linux Gentoo et de Windows 10 ...
Je cherche du boulot sur Paris et RP Ouest en administration système ou mieux dans la tierce maintenance applicative, middleware, base de données, flux ...

Hors ligne

#2 Le 06/11/2015, à 13:39

credenhill

Re : Renommer des fichiers : changer dans x fichiers une partie de leur nom

hello
enlever le -n si c'et ok

$ rename -n 's/Saison/S0/' Code*
Code.Lyoko.Saison1.Ep24.130391597.mkv renamed as Code.Lyoko.S01.Ep24.130391597.mkv
Code.Lyoko.Saison1.Ep24.130391597.nfo renamed as Code.Lyoko.S01.Ep24.130391597.nfo
Code.Lyoko.Saison1.Ep25.130391598.mkv renamed as Code.Lyoko.S01.Ep25.130391598.mkv
Code.Lyoko.Saison1.Ep25.130391598.nfo renamed as Code.Lyoko.S01.Ep25.130391598.nfo

Hors ligne

#3 Le 06/11/2015, à 13:50

carreti

Re : Renommer des fichiers : changer dans x fichiers une partie de leur nom

Aie mon rename ne connait pas l'option -n

rename -n 's/Saison/S0/' Code*
rename : option invalide -- 'n'

Utilisation :
 rename [options] <expression> <remplacement> <fichier> ...

Renommer des fichiers.

Options :
 -v, --verbose    expliquer les actions en cours
 -s, --symlink    agir sur la cible du lien symbolique

 -h, --help     afficher cette aide et quitter
 -V, --version  afficher les informations de version et quitter

Consultez rename(1) pour obtenir des précisions complémentaires.

rename -V
rename de util-linux 2.26.2

Mais même sans cette option, ça ne fonctionne pas sad

EDIT : Il semblerait qu'il y ait plusieurs versions suivant les distributions dont la mienne (Gentoo mais arch apparemment c'est la même), qui ne supporte pas les regexp.
Après intallation de perl et emerge de dev-perl/rename j'ai un rename qui fonctionne comme le votre, bon il s'appelle perl-rename.

perl-rename -n 's/Saison/S0/' Code*
Code.Lyoko.Saison1.Ep24.130391597.mkv -> Code.Lyoko.S01.Ep24.130391597.mkv
Code.Lyoko.Saison1.Ep24.130391597.nfo -> Code.Lyoko.S01.Ep24.130391597.nfo
Code.Lyoko.Saison1.Ep24.130391598.mkv -> Code.Lyoko.S01.Ep24.130391598.mkv
Code.Lyoko.Saison1.Ep24.130391598.nfo -> Code.Lyoko.S01.Ep24.130391598.nfo

perl-rename --version
perl-rename 1.9

Pas mal ... Je crois que cela va être difficile de faire plus simple et plus sûr. Merci pour ça.

Dernière modification par carreti (Le 06/11/2015, à 14:32)


Utilisateur et administrateur de Linux et d'Unix (depuis le siècle dernier) et plus précisément ces dernières années de  Linux Gentoo et de Windows 10 ...
Je cherche du boulot sur Paris et RP Ouest en administration système ou mieux dans la tierce maintenance applicative, middleware, base de données, flux ...

Hors ligne

#4 Le 06/11/2015, à 16:10

MicP

Re : Renommer des fichiers : changer dans x fichiers une partie de leur nom

michel@debG53SW:~$ rep="carreti";mkdir $rep && cd $rep
michel@debG53SW:~/carreti$ touch Code.Lyoko.Saison{1..2}.Ep{29..30}.1303915xx.{mkv,nfo} && ls -1
Code.Lyoko.Saison1.Ep29.1303915xx.mkv
Code.Lyoko.Saison1.Ep29.1303915xx.nfo
Code.Lyoko.Saison1.Ep30.1303915xx.mkv
Code.Lyoko.Saison1.Ep30.1303915xx.nfo
Code.Lyoko.Saison2.Ep29.1303915xx.mkv
Code.Lyoko.Saison2.Ep29.1303915xx.nfo
Code.Lyoko.Saison2.Ep30.1303915xx.mkv
Code.Lyoko.Saison2.Ep30.1303915xx.nfo
michel@debG53SW:~/carreti$ for fich in *; do mv "${fich}" "${fich//aison/0}";done && ls -1
Code.Lyoko.S01.Ep29.1303915xx.mkv
Code.Lyoko.S01.Ep29.1303915xx.nfo
Code.Lyoko.S01.Ep30.1303915xx.mkv
Code.Lyoko.S01.Ep30.1303915xx.nfo
Code.Lyoko.S02.Ep29.1303915xx.mkv
Code.Lyoko.S02.Ep29.1303915xx.nfo
Code.Lyoko.S02.Ep30.1303915xx.mkv
Code.Lyoko.S02.Ep30.1303915xx.nfo
michel@debG53SW:~/carreti$ cd .. && rm -Rf $rep
michel@debG53SW:~$ 

EDIT : Un peu plus sélectif.

michel@debG53SW:~$ rep="carreti";mkdir $rep && cd $rep
michel@debG53SW:~/carreti$ touch Code.Lyoko.Saison{1..2}.Ep{29..30}.1303915xx.{mkv,nfo} mic.Saison{1..2}{dat,txt} && ls -1
Code.Lyoko.Saison1.Ep29.1303915xx.mkv
Code.Lyoko.Saison1.Ep29.1303915xx.nfo
Code.Lyoko.Saison1.Ep30.1303915xx.mkv
Code.Lyoko.Saison1.Ep30.1303915xx.nfo
Code.Lyoko.Saison2.Ep29.1303915xx.mkv
Code.Lyoko.Saison2.Ep29.1303915xx.nfo
Code.Lyoko.Saison2.Ep30.1303915xx.mkv
Code.Lyoko.Saison2.Ep30.1303915xx.nfo
mic.Saison1dat
mic.Saison1txt
mic.Saison2dat
mic.Saison2txt
michel@debG53SW:~/carreti$ motif=".Saison";remplac=".S0";for fich in *${motif}*.{mkv,nfo}; do mv "${fich}" "${fich//${motif}/${remplac}}";done && ls -1
Code.Lyoko.S01.Ep29.1303915xx.mkv
Code.Lyoko.S01.Ep29.1303915xx.nfo
Code.Lyoko.S01.Ep30.1303915xx.mkv
Code.Lyoko.S01.Ep30.1303915xx.nfo
Code.Lyoko.S02.Ep29.1303915xx.mkv
Code.Lyoko.S02.Ep29.1303915xx.nfo
Code.Lyoko.S02.Ep30.1303915xx.mkv
Code.Lyoko.S02.Ep30.1303915xx.nfo
mic.Saison1dat
mic.Saison1txt
mic.Saison2dat
mic.Saison2txt
michel@debG53SW:~/carreti$ cd .. && rm -Rf $rep
michel@debG53SW:~$ 

Dernière modification par MicP (Le 10/11/2015, à 05:13)

Hors ligne

#5 Le 06/11/2015, à 20:34

carreti

Re : Renommer des fichiers : changer dans x fichiers une partie de leur nom

Hé hé, comment je me suis compliqué la vie ! Bien vu ... smile


Utilisateur et administrateur de Linux et d'Unix (depuis le siècle dernier) et plus précisément ces dernières années de  Linux Gentoo et de Windows 10 ...
Je cherche du boulot sur Paris et RP Ouest en administration système ou mieux dans la tierce maintenance applicative, middleware, base de données, flux ...

Hors ligne

#6 Le 06/11/2015, à 21:16

MicP

Re : Renommer des fichiers : changer dans x fichiers une partie de leur nom

Quand ça sera moi qui me compliquerai la vie (dans pas longtemps peut-être) n'hésite pas smile

Hors ligne