7

У меня есть задача пакетного переименования, и я обнаружил, что команда «переименовать» в Ubuntu отличается от Fedora.

В Ubuntu переименование написано на Perl и имеет поддержку регулярных выражений. Есть ли способ установить его на Fedora?

4 ответа4

4

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

Вот учебник по использованию cpan.

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

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

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

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

Вот как бы вы установили переименование из 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
2

Установить предварительное имя (Perl версия переименования):

sudo dnf install prename
1

Скрипт Perl (сам Ларри Уолл) называется rename.pl

Затем вам нужно будет сохранить его в подходящем каталоге. Возможно, /usr/local/bin/ и убедитесь, что он исполняемый, набрав

sudo chmod +x /usr/local/bin/rename.pl
0

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

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

# 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 ) && rm -rf "rename-1.9"

Замечания:

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

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

источник

Примечание: тот же ответ, но с превосходной подсветкой синтаксиса в StackOverflow

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .