У меня есть задача пакетного переименования, и я обнаружил, что команда «переименовать» в Ubuntu отличается от Fedora.
В Ubuntu переименование написано на Perl и имеет поддержку регулярных выражений. Есть ли способ установить его на Fedora?
Вы можете установить его, используя 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
Установить предварительное имя (Perl версия переименования):
sudo dnf install prename
Скрипт Perl (сам Ларри Уолл) называется rename.pl
Затем вам нужно будет сохранить его в подходящем каталоге. Возможно, /usr/local/bin/
и убедитесь, что он исполняемый, набрав
sudo chmod +x /usr/local/bin/rename.pl
Для дистрибутивов семейства 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