Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

  • /usr/bin/rename.ul из пакета util-linux (следовательно, суффикса .ul)
  • /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-rename на /usr/local/bin, он будет иметь приоритет над rename от util-linux. То же самое касается manpage при установке на /usr/local/share/man/man1/.

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

Ответ 2

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

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

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

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

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

CPAN
cpan 1 > установить файл:: Rename
CPAN: загружается нормально (v2.20)
Переход на чтение '/root/.cpan/Metadata'
 База данных была сгенерирована в среду, 30 сентября 2015 г. 08:17:02 GMT
 Запуск установки для модуля "Файл:: Переименовать"
....
Running Build install
Установка/usr/local/share/man/man1/rename.1
Установка/usr/local/share/perl5/File/Rename.pm
Установка/usr/local/share/man/man3/File::Rename.3pm
Установка/usr/local/bin/rename
Написание/usr/local/lib64/perl5/auto/File/Rename/.packlist
 RMBARKER/File-Rename-0.20.tar.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

Ответ 3

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

# In bash
sudo yum install perl-CPAN
sudo cpan

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

Ответ 4

Для дистрибутивов семейства Debian (.deb) я рекомендую @SzG answer.

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

# 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

источник