Введение
Переименование нескольких файлов и каталогов с помощью команды mv
может быть утомительным процессом, так как включает в себя написание сложных команд с конвейерами, циклами и т. д.
Здесь пригодится команда rename
. Переименовывать файлы, заменяя поисковое выражение в их имени на указанную замену.
В этом руководстве мы объясним, как использовать команду rename
для пакетного переименования файлов.
Установить переименовать
Существует две версии команды rename
с разным синтаксисом и функциональностью. Мы будем использовать Perl-версию команды rename
.
Если эта версия не установлена в вашей системе, установите ее с помощью диспетчера пакетов вашего дистрибутива Linux:
Убунту и Дебиан
sudo apt update
sudo apt install rename
CentOS и Федора
sudo yum install prename
Арх Линукс
yay perl-rename
Использовать переименование
Ниже приведен общий синтаксис команды rename
:
rename [OPTIONS] perlexpr files
Команда rename
в основном представляет собой Perl-скрипт. Он переименует данный файл на основе указанного регулярного выражения perlexpr
.
Например, следующая команда изменит расширение всех файлов .css
на .scss
:
rename 's/.css/.scss/' *.css
Поясним команду подробнее:
s/search_pattern/replacement/
— Оператор замены..css
— модель поиска. Это первый аргумент оператора подстановки. Командаrename
будет искать этот шаблон в указанном имени файла и, если найдет, заменит его аргументом замены..scss
- Замена. Второй аргумент в операторе подстановки.*.css
- Все файлы с расширением ".css". Подстановочный знак*
— это символ, используемый для представления нуля, одного или нескольких символов.
Перед запуском фактической команды и переименованием файлов и каталогов всегда рекомендуется использовать параметр -n
, который выполнит «пробный запуск» и покажет, какие файлы будут переименованы:
rename -n 's/.css/.scss/' *.css
Вывод будет выглядеть следующим образом:
rename(file-0.css, file-0.scss)
rename(file-1.css, file-1.scss)
rename(file-2.css, file-2.scss)
rename(file-3.css, file-3.scss)
rename(file-4.css, file-4.scss)
По умолчанию команда rename
не перезаписывает существующие файлы. Используйте параметр -f
, который позволяет утилите rename
перезаписывать существующие файлы:
rename -f 's/.css/.scss/' *.css
Если вы хотите rename
имена файлов, которые были переименованы правильно, используйте параметр -v
(verbose — подробный):
rename -v 's/.css/.scss/' *.css
file-0.css renamed as file-0.scss
file-1.css renamed as file-1.scss
file-2.css renamed as file-2.scss
file-3.css renamed as file-3.scss
file-4.css renamed as file-4.scss
Примеры
Вот несколько распространенных примеров использования команды переименования:
Замените пробелы в именах файлов символами подчеркивания:
rename 'y//_/' *
Преобразование имен файлов в нижний регистр
rename 'y/AZ/az/' *
Преобразование имен файлов в верхний регистр
rename 'y/az/AZ/' *
Удалить.bk из имен файлов
rename 's/\.bk$//' *.bk
Переименуйте файлы.jpeg и.JPG в.jpg.
rename 's/\.jpe?g$/.jpg/i' *
Вывод
Команда rename
позволяет переименовывать несколько файлов одновременно, используя регулярные выражения Perl.