[Perl] récupérer le nouveau nom après rename

Patrice Karatchentzeff patrice.karatchentzeff at gmail.com
Mar 31 Mar 12:57:38 CEST 2020


Salut

Tu t'embêtes bien avec tes boucles...

find -type f -iname -iname "*.wav" -exec rename (ce que tu veux) {} \;

Si tu fais un pipe derrière le rename, ça doit marcher.

Attention, si tu as des milliers de fichiers, il faut passer par xargs

PK

Le mar. 31 mars 2020 à 12:39, Philippe Delavalade
<philippe.delavalade at orange.fr> a écrit :
>
> Bonjour Sylvain et merci de ta réponse rapide.
>
> J'utilise le rename de perl dans un script bash.
>
> C'est en fait pour aider quelqu'un, lequel veut du bash.
>
> Voici mon code
>
> #!/bin/bash
>
> oldifs=$IFS
> IFS=$(echo -ne "\n\b")
> for f in $(find . -type f -iname '*.wav')
> do
>   perl-rename 's/ /_/g; s/wav$/wav/i' "$f"
> done
> for f in $(find . -type f -name '*.wav')
> do
>     ffmpeg -y -i "$f" -vn ${f%.wav}.mp3
> done
> IFS=$oldifs
>
> Si je mets le ffmpeg dans la première boucle, ça ne marche pas puisque le
> fichier ne s'appelle peut-être plus $f vu rename.
>
> J'utilise perl-rename qui est le nom dans ma distrib, rename étant un
> utilitaire linux simpliste (je ne sais plus de quel paquet il vient).
>
> Enfin la modification de IFS à cause des espaces éventuels dans le nom des
> fichiers.
>
> Merci.
>
> --
> Philippe
>
> Le mardi 31 mars à 12:09, Sylvain Lhullier a écrit :
> > Bonjour Philippe,
> > Je ne suis pas certain de te suivre : tu es en Bash ou en Perl ?
> > Peux-tu nous transmettre un extrait pertinent de ton code pour illustrer ?
> > Si, tu utilise la commande shell rename écrite en Perl, tu peux tout faire
> > en Perl (il y a même un module pour cela). Ou bien récupérer l'output
> > de la commande en shell (bof, bof).
> > Merci à toi,
> >
> > Philippe Delavalade a écrit :
> > > Bonjour.
> > >
> > > Dans un script bash (linux), je renomme des fichiers dans une boucle for
> > > puis je voudrais agir sur les fichiers renommés (dans la même boucle) mais
> > > je ne sais pas comment récupérer le nouveau nom. Bien sûr, je peux faire
> > > une deuxième boucle mais ça ne me semble pas élégant.
> > >
> > > Rien là-dessus dans perldoc ni dans mes recherches sur le net.
> > >
> > > Désolé si la question est triviale (ce que je crains d'ailleurs).
> > >
> > > Merci par avance.
> > >
> > > --
> > > Philippe
> > > _______________________________________________
> > > Perl mailing list
> > > Perl at mongueurs.net
> > > http://listes.mongueurs.net/mailman/listinfo/perl
> > > Attention, les archives sont publiques
> >
> > --
> > Sylvain Lhullier
> > Formation Perl  https://formation-perl.fr/
> > Président des Mongueurs de Perl  http://mongueurs.net/
> > _______________________________________________
> > Perl mailing list
> > Perl at mongueurs.net
> > http://listes.mongueurs.net/mailman/listinfo/perl
> > Attention, les archives sont publiques
> _______________________________________________
> Perl mailing list
> Perl at mongueurs.net
> http://listes.mongueurs.net/mailman/listinfo/perl
> Attention, les archives sont publiques



-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff at gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)


Plus d'informations sur la liste de diffusion Perl