Переименование нескольких файлов в Linux

rename — инструмент командной строки для переименования нескольких файлов в Linux

Новости

Мы часто используем команду «mv» для переименования одного файла в Linux. Однако быстрое переименование нескольких файлов или тем более группы файлов достаточно сложная задача для выполнения в терминале.

Linux поставляется с очень мощным встроенным инструментом под названием rename. Команда rename используется для переименования нескольких файлов или же группы файлов, переименования файлов из верхнего в нижний регистр и наоборот, и перезаписывания файлов с использованием выражений perl.

Переименование нескольких файлов в Linux

Команда «rename» является частью скрипта Perl и находится в разделе «/usr/bin/» во многих дистрибутивах Linux. Вы можете запустить команду «which», чтобы узнать местоположение команды rename.

$ which rename
/usr/bin/rename

 

Основной синтаксис команды переименования

rename 's/old-name/new-name/' files

 

Команда rename содержит несколько необязательных аргументов вместе с обязательными регулярными выражением для perl, которое указывают команде rename выполнять конкретные действия.

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]

 

  • -v: Показать, имена успешно переименованных файлов.
  • -n: Показать, какие файлы были бы переименованы.
  • -f: Принудительно перезаписать существующие файлы.
  • perlexpr: регулярные выражения для Perl.

Для лучшего понимания этой утилиты мы обсудим несколько практических примеров этой команды в статье.

1. Пример базовой команды переименования

Предположим, у вас есть куча файлов с расширением «.html», и вы хотите переименовать все файлы в «.php» за один раз. Сначала выполните «ls -l», чтобы проверить список файлов с расширением «.html».

# [email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive 588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive 938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive 938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive 978137 Oct 10 12:11 sports.html

 

Теперь изменим расширение всех этих файлов с «.html» на «.php». Вы можете использовать следующую команду «rename» с регулярными выражением для perl, как показано ниже.

[email protected]:~$ rename 's/\.html$/\.php/' *.html

 

Примечание. В приведенной выше команде мы использовали два аргумента.

  • Первый аргумент — это выражение perl, которое заменяет .html на .php.
  • Второй аргумент — сообщает команде rename заменить все файлы на *.php.

Давайте проверим, все ли файлы переименованы в расширение .php, выполнив ls -l:

[email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.php
-rw-rw-r-- 1 ravisaive ravisaive 588895 Oct 10 12:10 entertainment.php
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.php
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.php
-rw-rw-r-- 1 ravisaive ravisaive 938895 Oct 10 12:10 news.php
-rw-rw-r-- 1 ravisaive ravisaive 938937 Oct 10 12:11 photos.php
-rw-rw-r-- 1 ravisaive ravisaive 978137 Oct 10 12:11 sports.php

 

Выше вы видите, что все html файлы переименованы в php.

2. Проверьте изменения перед выполнением команды переименования

При выполнении важных или крупных задач переименования вы всегда можете проверить изменения, выполнив команду rename с аргументом «-n». Параметр «-n» точно скажет вам, какие изменения произойдут, но изменения не выполняются по-настоящему. Вот пример приведенной такой команды:

[email protected]:~$ rename -n 's/\.php$/\.html/' *.php
cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

 

Примечание. Вышеуказанный вывод команды отображает только изменения, но в реальности изменения не выполняются, если только вы не запускаете команду без флага «-n».

3. Вывод полной информации обо всех изменениях

Мы видели, что команда rename не отображает никакой информации об изменениях, которые она делает. Итак, если вы хотите получить информацию о команде переименования вы можете использовать флаг «-n», или же флаг «-v», чтобы вывести полную информацию обо всех изменениях, сделанных командой rename.

[email protected]:~$ rename -v 's/\.php$/\.html/' *.php
cricket.php renamed as cricket.html
entertainment.php renamed as entertainment.html
health.php renamed as health.html
lifestyle.php renamed as lifestyle.html
news.php renamed as news.html
photos.php renamed as photos.html
sports.php renamed as sports.html

 

4. Преобразование регистров (верхний в нижний и наоборот)

Чтобы разом переименовать все файлы с именами написанными нижним регистром в верхний регистр, необходимо:

Нижний регистр в верхний:
[email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive 588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive 938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive 938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive 978137 Oct 10 12:11 sports.html

 

Просто используйте следующую команду с выражением perl.

[email protected]:~$ rename 'y/a-z/A-Z/' *.html

 

После выполнения вышеуказанной команды вы можете проверить изменения, выполнив «ls -l».

[email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 CRICKET.HTML
-rw-rw-r-- 1 ravisaive ravisaive 588895 Oct 10 12:10 ENTERTAINMENT.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 HEALTH.HTML
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 LIFESTYLE.HTML
-rw-rw-r-- 1 ravisaive ravisaive 938895 Oct 10 12:10 NEWS.HTML
-rw-rw-r-- 1 ravisaive ravisaive 938937 Oct 10 12:11 PHOTOS.HTML
-rw-rw-r-- 1 ravisaive ravisaive 978137 Oct 10 12:11 SPORTS.HTML

 

Вы видите, что приведенная выше команда фактически переименовала все имена файлов нижнего регистра (с расширением .HTML) в верхний регистр.

Верхний регистр в нижний:

Аналогично, вы также можете преобразовать все символы верхнего регистра в нижний регистр, используя следующую команду:

[email protected]:~$ rename 'y/A-Z/a-z/' *.HTML

 

[email protected]:~$ ls -l
total 22532
-rw-rw-r-- 1 ravisaive ravisaive 6888896 Oct 10 12:10 cricket.html
-rw-rw-r-- 1 ravisaive ravisaive 588895 Oct 10 12:10 entertainment.html
-rw-rw-r-- 1 ravisaive ravisaive 6188895 Oct 10 12:10 health.html
-rw-rw-r-- 1 ravisaive ravisaive 6538895 Oct 10 12:10 lifestyle.html
-rw-rw-r-- 1 ravisaive ravisaive 938895 Oct 10 12:10 news.html
-rw-rw-r-- 1 ravisaive ravisaive 938937 Oct 10 12:11 photos.html
-rw-rw-r-- 1 ravisaive ravisaive 978137 Oct 10 12:11 sports.html

 

5. Перезапись существующих файлов

Если вы хотите принудительно перезаписать существующие файлы, используйте параметр «-f», как показано в примере ниже.

[email protected]:~$ rename -f 's/a/b/' *.html

 

Если вы хотите узнать больше о команде rename, введите «man rename» в терминале.

Команда rename очень полезна, если вы имеете дело с многократным или групповым переименованием файлов из командной строки.

 

 

Спасибо за уделенное время на прочтение статьи!

Если возникли вопросы, задавайте их в комментариях.

Подписывайтесь на обновления нашего блога и оставайтесь в курсе новостей мира инфокоммуникаций!

Чтобы знать больше и выделяться знаниями среди толпы IT-шников, записывайтесь на курсы Cisco от Академии Ciscoкурсы Linux от Linux Professional Institute на платформе SEDICOMM University.

Курсы Cisco и Linux с трудоустройством!

Спешите подать заявку! Осталось пару мест. Группы стартуют 22 июля, а следующая 19 августа, 23 сентября, 21 октября, 25 ноября, 16 декабря, 20 января, 24 февраля.
Что Вы получите?
  • Поможем стать экспертом в сетевом администрировании и получить международные сертификаты Cisco CCNA Routing & Switching или Linux LPI.
  • Предлагаем проверенную программу и учебник экспертов из Cisco Networking Academy и Linux Professional Institute, сертифицированных инструкторов и личного куратора.
  • Поможем с трудоустройством и сделать карьеру. 100% наших выпускников трудоустраиваются.
Как проходит обучение?
  • Проводим вечерние онлайн-лекции на нашей платформе или обучайтесь очно на базе Киевского офиса.
  • Спросим у вас об удобном времени для практик и подстроимся: понимаем, что времени учиться мало.
  • Если хотите индивидуальный график — обсудим и осуществим.
  • Выставим четкие дедлайны для самоорганизации. Личный куратор будет на связи, чтобы ответить на вопросы, проконсультировать и мотивировать придерживаться сроков сдачи экзаменов.
А еще поможем Вам:
  • отредактировать резюме;
  • подготовиться к техническим интервью;
  • подготовиться к конкурсу на понравившуюся вакансию;
  • устроим на работу в Cisco по программе Cisco Incubator, New Graduate и Experienced. Наши студенты, которые уже работают там: жмите на #НашиВCisco Вконтакте, #НашиВCisco Facebook.
Чтобы учиться на курсах Cisco CCNA Routing & Switching и Linux LPI, подайте заявку или получите бесплатную консультацию.
Новости

Больше похожих постов

2 комментария. Оставить новый

  • Лично у меня на убунту после попытки переименовать с верхнего в нижний регистр командой 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.*?
    Ответить

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.
Вы должны согласиться с условиями для продолжения

Самое читаемое
Меню