web-dev-qa-db-fra.com

Obtenez l'utilitaire de renommage Perl au lieu du renommage intégré

De nombreux sites (y compris divers SO articles) parlent de l'utilisation de "renommer" en utilisant des expressions Perl pour renommer des fichiers.

Ce serait parfait, mais apparemment ce n'est pas l'utilitaire de changement de nom que j'ai, et aucun de ces articles ne semble comprendre qu'il existe plusieurs versions de "renommer" et je n'arrive pas à trouver où obtenir une version qui accepte les expressions Perl.

Comment puis-je mettre la main sur l’utilitaire de renommage plus puissant mentionné ici , ici et ici ?

J'utilise Fedora 20. Ma commande de changement de nom actuelle provient du paquet util-linux et, apparemment, j'ai besoin de la version Perl, qui est meilleure. 

24
WorldsEndless

Je ne peux parler que pour Debian. Les deux programmes s'appellent

  • /usr/bin/rename.ul du paquetage util-linux (d'où le suffixe .ul)
  • /usr/bin/prename du package Perl

La commande réelle rename fonctionne via le mécanisme /etc/alternatives, dans lequel

  • /usr/bin/rename est un lien symbolique vers /etc/alternatives/rename
  • /etc/alternatives/rename est un lien symbolique vers /usr/bin/prename

Le même problème me dérange sur Cygwin, qui est un produit Red Hat, devrait donc ressembler davantage à Fedora. Je jetterai un coup d'oeil sur l'ordinateur portable de mon entreprise lundi. Et je me souviens que Perl-renommé y avait travaillé parfois. Probablement avant d'avoir installé util-linux.

Si vous installez Perl-rename en /usr/local/bin, sa priorité est rename à partir de util-linux. Même chose pour la page de manuel lorsqu’il est installé à /usr/local/share/man/man1/.

Je viens de créer un paquetage distinct de renommage Perl sur Github: https://github.com/subogero/rename

17
SzG

Vous pouvez l’installer à l’aide de cpan , le référentiel Perl similaire à pip pour python. 

Voici un tutorial sur l'utilisation de cpan. 

Si vous essayez de le renommer, il ressemble à ceci

renommer --help
call: renomme à partir de fichiers ...

Pour installer le changement de nom Perl, vous pouvez procéder comme suit. Vous devrez peut-être installer quelques dépendances. Vous pouvez généralement appuyer simplement sur Entrée.

cpan
cpan 1 > install File :: Rename
CPAN: OK stockable, stockable (v2.20)
Va lire '/root/.cpan/Metadata'
La base de données a été générée le mercredi, 30 septembre 2015 08:17:02 GMT
Exécution de l’installation pour le module 'File :: Rename'
....
Installation en cours
Installation de /usr/local/share/man/man1/rename.1
Installation de /usr/local/share/Perl5/File/Rename.pm
Installation de /usr/local/share/man/man3/File::Rename.3pm
Installation de/usr/local/bin/rename
Écriture /usr/local/lib64/Perl5/auto/File/Rename/.packlist
RMBARKER/File-Rename-0.20.tar.gz
./Build install - OK 

C’est ainsi que vous installeriez le changement de nom depuis cpan.
La prochaine étape consiste à le faire fonctionner sur votre système. Comme vous pourriez avoir plus d'un rename installé. 

which rename  
/usr/bin/rename  

Quand vous voulez vraiment celui-ci. 

/usr/local/bin/rename --help
Usage:
    rename [ -h|-m|-V ] [ -v ] [ -n ] [ -f ] [ -e|-E *perlexpr*]*|*perlexpr*
    [ *files* ]

Options:
    -v, -verbose
            Verbose: print names of files successfully renamed.

    -n, -nono
            No action: print names of files to be renamed, but don't rename.

    -f, -force
            Over write: allow existing files to be over-written.

    -h, -help
            Help: print SYNOPSIS and OPTIONS.

    -m, -man
            Manual: print manual page.

    -V, -version
            Version: show version number.

    -e      Expression: code to act on files name.

            May be repeated to build up code (like "Perl -e"). If no -e, the
            first argument is used as code.

    -E      Statement: code to act on files name, as -e but terminated by
            ';'.

Je viens de le mettre dans /usr/bin/ mais avec un nom légèrement différent pour m'assurer que je n'ai pas cassé de scripts/programmes existants, cela dépend de l'ancien. 

ln -s /usr/local/bin/rename /usr/bin/rename.pl
14
nelaaro

Je devais faire ce qui suit:

# In bash
Sudo yum install Perl-CPAN
Sudo cpan

# In CPAN Shell
install Module::Build
install File::Rename
1
qed

Pour les distributions Debian-family (.deb), je recommande @ SzG's answer .

Pour les distributions RedHat-family (.rpm) (par exemple Fedora), si votre temps est précieux (comme le mien), vous pouvez télécharger, compiler et installer à partir de la source via cpan in one, terse commande:

# Install (replace `rename-1.9` below with another version if desired)
curl -L "http://search.cpan.org/CPAN/authors/id/P/PE/PEDERST/rename-1.9.tar.gz" | tar -xz && ( cd "rename-1.9"; Perl "Makefile.PL"; make && make install )

# Cleanup
rm -rf "rename-1.9"

Note:  

INSTALL_BASE peut être configuré pour modifier le répertoire d'installation de base.

par exemple Perl "Makefile.PL" INSTALL_BASE=/usr/local 

la source

1
Travis Clarke