
Переименование нескольких файлов и каталогов с помощью команды mv может оказаться утомительным процессом, поскольку он требует написания сложных команд с каналами, циклами и т. д.
Здесь пригодится команда rename . Она переименовывает указанные файлы, заменяя поисковое выражение в их именах на указанное выражение.
В этом уроке мы объясним, как использовать команду rename для пакетного переименования файлов.
Установка rename
Существует две версии команды rename с разным синтаксисом и функциями. Мы будем использовать версию команды rename на Perl.
Если эта версия не установлена в вашей системе, воспользуйтесь менеджером пакетов вашего дистрибутива Linux для ее установки:
-
Убунту и Дебиан
sudo apt updatesudo apt install rename -
CentOS и Fedora
sudo yum install prename -
Арч Линукс
yay perl-rename
Использование rename
Ниже приведен общий синтаксис команды rename :
rename [ OPTIONS ] perlexpr files
Команда rename — это, по сути, скрипт Perl. Она переименовывает указанные files в соответствии с заданным регулярным выражением perlexpr . Подробнее о регулярных выражениях Perl можно узнать здесь .
Например, следующая команда изменит расширение всех файлов .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 (подробный вариант):
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
Ниже приведены несколько распространенных примеров использования команды переименования:
Заменить пробелы в именах файлов на подчеркивания
rename 'y/ /_/' *
Преобразовать имена файлов в строчные буквы
rename 'y/AZ/az/' *
Преобразовать имена файлов в верхний регистр
rename 'y/az/AZ/' *
Удалить .bak из имен файлов
rename 's/.bak$//' *.bak
Переименуйте имена файлов .jpeg и .JPG в .jpg
rename 's/.jpe?g$/.jpg/i' *
Заключение
Команда rename позволяет переименовать несколько файлов одновременно, используя регулярные выражения Perl.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства