web-dev-qa-db-de.com

Rufen Sie das Perl-Umbenennungsprogramm anstelle der integrierten Umbenennung ab

Viele Websites (einschließlich verschiedener SO-Artikel) sprechen über die Verwendung von "Umbenennen" und verwenden Perl-Ausdrücke zum Umbenennen von Dateien.

Das wäre perfekt, aber anscheinend ist dies nicht das Umbenennungsprogramm, das ich habe, und keiner dieser Artikel scheint zu verstehen, dass es mehrere Versionen von "Umbenennen" gibt und ich kann nicht herausfinden, wo ich eine Version bekomme, die Perl-Ausdrücke akzeptiert.

Wie kann ich das leistungsfähigere Umbenennungsprogramm in den Händen bekommen - hier , hier und hier ?

Ich verwende Fedora 20. Mein aktueller Umbenennungsbefehl stammt aus dem util-linux-Paket und anscheinend brauche ich die Perl-Version, was besser ist. 

24
WorldsEndless

Ich kann nur für Debian sprechen. Die beiden Programme werden aufgerufen

  • /usr/bin/rename.ul aus dem util-linux-Paket (daher das Suffix .ul)
  • /usr/bin/prename aus dem Perl-Paket

Der eigentliche Befehl rename arbeitet über den Mechanismus /etc/alternatives, wobei

  • /usr/bin/rename ist ein symbolischer Link zu /etc/alternatives/rename
  • /etc/alternatives/rename ist ein symbolischer Link zu /usr/bin/prename

Dasselbe Problem hat mich bei Cygwin, einem Red Hat-Produkt, geärgert, sollte also eher Fedora ähneln. Ich werde am Montag auf meinem Firmen-Laptop nachsehen. Und ich erinnere mich, dass die Perl-Umbenennung manchmal dort gearbeitet hat. Wahrscheinlich bevor ich util-linux installiert habe.

Wenn Sie die Perl-Umbenennung in /usr/local/bin installieren, hat sie Vorrang vor rename von util-linux. Dasselbe gilt für die Manpage, wenn sie in /usr/local/share/man/man1/ installiert ist.

Ich habe gerade ein separates Perl-Umbenennungspaket auf Github erstellt: https://github.com/subogero/rename

17
SzG

Sie können es mit cpan installieren. Hierbei handelt es sich um das Perl-Repository, das Pip für Python ähnelt. 

Hier ist ein Tutorial über cpan. 

Wenn Sie versuchen, umzubenennen, sieht es so aus

umbenennen von --help
Aufruf: Umbenennen von in Dateien ...

Um die Perl-Umbenennung zu installieren, können Sie Folgendes tun. Möglicherweise müssen Sie einige Abhängigkeiten installieren. Sie können im Allgemeinen nur die Taste "Enter" drücken

cpan
cpan 1 > install File :: Rename
CPAN: Speicherfähig geladen (v2.20)
Lesen von '/root/.cpan/Metadata'
Datenbank wurde erstellt am Mi, 30. September 2015 08:17:02 GMT
Ausführen der Installation für das Modul 'Datei :: Umbenennen'
....
Ausführen von Build Install
/Usr/local/share/man/man1/rename.1 installieren
/Usr/local/share/Perl5/File/Rename.pm wird installiert
Installation von /usr/local/share/man/man3/File::Rename.3pm
Installation von/usr/local/bin/umbenennen
Schreiben von /usr/local/lib64/Perl5/auto/File/Rename/.packlist
RMBARKER/File-Rename-0.20.tar.gz
./Bauinstallation - OK 

So würden Sie die Umbenennung von Cpan installieren.
Als Nächstes soll es auf Ihrem System funktionieren. Möglicherweise haben Sie mehr als eine Umbenennung installiert. 

which rename  
/usr/bin/rename  

Wenn Sie das wirklich wollen 

/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
            ';'.

Ich habe es nur in /usr/bin/ geschrieben, aber mit einem leicht abweichenden Namen, um sicherzustellen, dass ich keine vorhandenen Skripte/Programme kaputt mache, die vom alten abhängen. 

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

Ich musste folgendes tun:

# In bash
Sudo yum install Perl-CPAN
Sudo cpan

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

Für die Debian-Familie (.deb) distros, ich empfehle @ SzG's Antwort .

Für die RedHat-Familie (.rpm) Distributionen (zB Fedora), wenn Ihre Zeit wertvoll ist (wie meine), können Sie von der Quelle über cpan herunterladen, kompilieren und installieren. in einem knappen Befehl:

# 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"

Hinweis:

INSTALL_BASE kann so eingestellt werden, dass das Basisinstallationsverzeichnis geändert wird.

z. B. Perl "Makefile.PL" INSTALL_BASE=/usr/local

Quelle

1
Travis Clarke