Мы часто используем команду «mv» для переименования одного файла в Linux. Однако быстрое переименование нескольких файлов или тем более группы файлов достаточно сложная задача для выполнения в терминале.
Linux поставляется с очень мощным встроенным инструментом под названием rename. Команда rename используется для переименования нескольких файлов или же группы файлов, переименования файлов из верхнего в нижний регистр и наоборот, и перезаписывания файлов с использованием выражений perl.
Переименование нескольких файлов в Linux
Команда «rename» является частью скрипта Perl и находится в разделе «/usr/bin/» во многих дистрибутивах Linux. Вы можете запустить команду «which», чтобы узнать местоположение команды rename.
Основной синтаксис команды переименования
Команда rename содержит несколько необязательных аргументов вместе с обязательными регулярными выражением для perl, которое указывают команде rename выполнять конкретные действия.
- -v: Показать, имена успешно переименованных файлов.
- -n: Показать, какие файлы были бы переименованы.
- -f: Принудительно перезаписать существующие файлы.
- perlexpr: регулярные выражения для Perl.
Для лучшего понимания этой утилиты мы обсудим несколько практических примеров этой команды в статье.
1. Пример базовой команды переименования
Предположим, у вас есть куча файлов с расширением «.html», и вы хотите переименовать все файлы в «.php» за один раз. Сначала выполните «ls -l», чтобы проверить список файлов с расширением «.html».
Теперь изменим расширение всех этих файлов с «.html» на «.php». Вы можете использовать следующую команду «rename» с регулярными выражением для perl, как показано ниже.
Примечание. В приведенной выше команде мы использовали два аргумента.
- Первый аргумент — это выражение perl, которое заменяет .html на .php.
- Второй аргумент — сообщает команде rename заменить все файлы на *.php.
Давайте проверим, все ли файлы переименованы в расширение .php, выполнив ls -l:
Выше вы видите, что все html файлы переименованы в php.
2. Проверьте изменения перед выполнением команды переименования
При выполнении важных или крупных задач переименования вы всегда можете проверить изменения, выполнив команду rename с аргументом «-n». Параметр «-n» точно скажет вам, какие изменения произойдут, но изменения не выполняются по-настоящему.
3. Вывод полной информации обо всех изменениях
Мы видели, что команда rename не отображает никакой информации об изменениях, которые она делает. Итак, если вы хотите получить информацию о команде переименования вы можете использовать флаг «-n», или же флаг «-v», чтобы вывести полную информацию обо всех изменениях, сделанных командой rename
4. Преобразование регистров (верхний в нижний и наоборот)
Чтобы разом переименовать все файлы с именами написанными нижним регистром в верхний регистр, необходимо:
Нижний регистр в верхний:
Просто используйте следующую команду с выражением perl.
После выполнения вышеуказанной команды вы можете проверить изменения, выполнив «ls -l».
Вы видите, что приведенная выше команда фактически переименовала все имена файлов нижнего регистра (с расширением .HTML) в верхний регистр.
Верхний регистр в нижний:
Аналогично, вы также можете преобразовать все символы верхнего регистра в нижний регистр, используя следующую команду:
5. Перезапись существующих файлов
Если вы хотите принудительно перезаписать существующие файлы, используйте параметр «-f», как показано в примере ниже.
Если вы хотите узнать больше о команде rename, введите «man rename» в терминале.
Команда rename очень полезна, если вы имеете дело с многократным или групповым переименованием файлов из командной строки.
Спасибо за уделенное время на прочтение статьи!
Если возникли вопросы, задавайте их в комментариях.
Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!
Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Cisco, курсы Linux от Linux Professional Institute на платформе SEDICOMM University.
Курсы Cisco, Linux, кибербезопасность, DevOps / DevNet, Python с трудоустройством!
- Поможем стать экспертом по сетевой инженерии, кибербезопасности, программируемым сетям и системам и получить международные сертификаты Cisco, Linux LPI, Python Institute.
- Предлагаем проверенную программу с лучшими учебниками от экспертов из Cisco Networking Academy, Linux Professional Institute и Python Institute, помощь сертифицированных инструкторов и личного куратора.
- Поможем с трудоустройством и стартом карьеры в сфере IT — 100% наших выпускников трудоустраиваются.
- Проведем вечерние онлайн-лекции на нашей платформе.
- Согласуем с вами удобное время для практик.
- Если хотите индивидуальный график — обсудим и реализуем.
- Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
- Всем, кто боится потерять мотивацию и не закончить обучение, предложим общение с профессиональным коучем.
- отредактировать или создать с нуля резюме;
- подготовиться к техническим интервью;
- подготовиться к конкурсу на понравившуюся вакансию;
- устроиться на работу в Cisco по специальной программе. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
3 комментария. Оставить новый
Лично у меня на убунту после попытки переименовать с верхнего в нижний регистр командой rename ‘y/A-Z/a-z/’ *.* пишет:
File1.TXT not renamed: file1.txt already exists
File2.TXT not renamed: file2.txt already exists
File3.TXT not renamed: file3.txt already exists
А как переименовать кучу файлов с различными именами и одним расширением в типа: file00.*, file01.*, … fileNN.*?
Чтобы я не написал, пишет: rename: not enough arguments
Что писал:
rename -vnai ‘s/.*/0$.txt/’ test