Переименование нескольких файлов и каталогов с помощью команды mv
может быть утомительным процессом, поскольку включает в себя написание сложных команд с конвейерами, циклами и т. Д.
Вот здесь и пригодится команда rename
. Он переименовывает данные файлы, заменяя выражение поиска в их имени указанной заменой.
В этом руководстве мы объясним, как использовать команду rename
для пакетного переименования файлов.
Содержание
Установка rename
Существует две версии команды rename
с разным синтаксисом и функциями. Мы будем использовать Perl-версию команды rename
.
Если эта версия не установлена в вашей системе, используйте диспетчер пакетов вашего дистрибутива Linux для ее установки:
-
Ubuntu и Debian
sudo apt update
sudo apt install rename
-
CentOS и Fedora
sudo yum install prename
-
Arch Linux
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/A-Z/a-z/' *
Преобразование имен файлов в верхний регистр
rename 'y/a-z/A-Z/' *
Удалите .bak
из имен файлов
rename 's/.bak$//' *.bak
Переименуйте .jpeg
и .JPG
в .jpg
rename 's/.jpe?g$/.jpg/i' *
Выводы
Команда rename
позволяет вам переименовывать сразу несколько файлов, используя регулярные выражения Perl.
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.