#1 Le 06/11/2015, à 12: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 ). Y avait-il mieux à faire ? Comment auriez vous fait ? Merci d'avance pour vos suggestions.
Bisous
Dernière modification par carreti (Le 06/11/2015, à 12: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, à 12: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, à 12: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
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, à 13: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, à 15: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, à 04:13)
Hors ligne
#5 Le 06/11/2015, à 19: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 ...
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, à 20: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
Hors ligne