Поиск по сайту:

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


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

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

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

which rename
/usr/bin/rename
Основной синтаксис команды переименования
rename 's/old-name/new-name/' files

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

rename [ -v ] [ -n ] [ -f ] perlexpr [ files ]
  1. -v: вывести имена успешно переименованных файлов.
  2. -n: показать, какие файлы были бы переименованы.
  3. -f: принудительно перезаписать существующие файлы.
  4. perlexpr: выражение Perl.

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

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

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

ravisaive@tecmint:~$ 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, как показано ниже.

ravisaive@tecmint:~$ rename 's/\.html$/\.php/' *.html

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

  1. Первый аргумент — это выражение Perl, которое заменяет .html на .php.
  2. Второй аргумент указывает команде переименования заменить все файлы на *.php.

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

ravisaive@tecmint:~$ 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. Проверьте изменения перед запуском команды переименования.

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

ravisaive@tecmint:~$ 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. Распечатать вывод переименования

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

ravisaive@tecmint:~$ 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. Преобразуйте все строчные буквы в прописные и наоборот.

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

От нижнего к верхнему регистру
ravisaive@tecmint:~$ 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.

ravisaive@tecmint:~$ rename 'y/a-z/A-Z/' *.html

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

ravisaive@tecmint:~$ 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) в верхний регистр.

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

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

ravisaive@tecmint:~$ rename 'y/A-Z/a-z/' *.HTML
ravisaive@tecmint:~$ 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. Сделайте первую букву имени файла заглавной

Чтобы использовать заглавную только первую букву каждого имени файла, используйте следующую команду.


rename 's/\b(\w)/\U$1/g' *.ext

6. Перезаписать существующие файлы

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

ravisaive@tecmint:~$ rename -f 's/a/b/' *.html

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

Команда переименовать очень полезна, если вы имеете дело с множественным или пакетным переименованием файлов из командной строки. Попробуйте и дайте мне знать, насколько это полезно с точки зрения переименования файлов.