Получите утилиту Perl rename вместо встроенного переименования

многие сайты (включая различные статьи SO) говорят об использовании "переименования" с помощью выражений Perl для переименования файлов.

Это было бы идеально, но, по-видимому, это не утилита переименования, и ни одна из этих статей, похоже, не понимает, что есть несколько версий "переименовать", и я не могу найти, где получить версию, которая принимает выражения Perl.

Как я могу получить более мощную утилиту переименования, упомянутую здесь, здесь и здесь?

Я запускаю Fedora 20. Моя текущая команда переименования из util-linux пакет и, по-видимому, мне нужна версия Perl, которая лучше.

4 ответов


я могу говорить только за Debian. Эти две программы называются

  • /usr/bin/rename.ul с util-linux пакета (отсюда .суффикс-уль -)
  • /usr/bin/prename С perl пакета

фактический rename команда работает через /etc/alternatives механизм, согласно которому

  • /usr/bin/rename - это симлинк на /etc/alternatives/rename
  • /etc/alternatives/rename является символической ссылкой на /usr/bin/prename

та же проблема беспокоила меня Cygwin, который является продуктом Red Hat, поэтому должен быть более похож на Fedora. Я посмотрю на своем ноутбуке в понедельник. И я помню, что Perl-rename иногда работал там. Вероятно, до того, как я установил util-linux.

если вы установите Perl-переименовать в /usr/local/bin он будет иметь приоритет над rename С util-linux. То же самое касается manpage при установке в /usr/local/share/man/man1/.

я только что создал отдельный пакет Perl-rename на Github: https://github.com/subogero/rename


вы можете установить его с помощью на CPAN, который является репозиторием perl, подобным pip для python.

здесь учебник при использовании cpan.

если вы попытаетесь запустить переименовать его, это выглядит так

переименовать --help
вызов: переименовать из в файлы...

для установки переименования perl вы можете сделать следующее. Возможно, Вам потребуется установить несколько зависимостей, вы можете просто нажать enter

на CPAN
на CPAN1> установить файл: переименовать
CPAN: Storable loaded ok (v2.20)
Переходим к чтению ' / root/.cpan / Metadata'
База данных была создана на СР, 30 сен 2015 08:17: 02 GMT
Запуск установки для модуля "File:: Rename"
....
Запуск Build install
Установка /usr / local/share/man/man1 / переименование.1
Установка /usr / local/share/perl5/файл / переименование.pm
Установка / usr / local/share/man/man3 / File::переименовать.3 часа дня
Установка /usr/local/bin / rename
Запись / usr / local/lib64/perl5/авто/файл/переименование/.packlist
Rmbarker / File-Rename-0.20.смола.gz
./ Build install -- OK

именно так вы бы установили переименование из cpan.
Затем, чтобы заставить его работать на вашей системе. Поскольку у вас может быть установлено несколько переименований.

which rename  
/usr/bin/rename  

когда вы действительно хотите этого.

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

Я просто положил его в /usr/bin/ но с небольшим другим именем, чтобы убедиться, что я не сломал существующие скрипты / программы, зависят от старого.

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

Я должен был сделать следующее:

# In bash
sudo yum install perl-CPAN
sudo cpan

# In CPAN shell
install Module::Build
install File::Rename

для Debian-family (.deb) дистрибутивов, рекомендую @szg в это ответ.

для RedHat-семьи (.rpm) дистрибутивы (например, Fedora), если ваше время драгоценные (как и мой), вы можете скачать, скомпилировать и установить из источника через cpan в одном немногословные:

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

Примечание:

INSTALL_BASE можно установить для изменения базового каталога установки.

например perl "Makefile.PL" INSTALL_BASE=/usr/local

источник