Как переименовать несколько файлов одновременно в Linux
Пакетное переименование файлов в Linux
В этом уроке мы узнаем, как переименовать несколько файлов одновременно в Linux с помощью различных инструментов. Все представленные здесь примеры протестированы в Ubuntu, однако они должны работать в любой операционной системе Linux.
Введение
Как вы, возможно, уже знаете, мы используем команду mv
для переименования или перемещения файлов и каталогов в Linux и Unix-подобных операционных системах.
Однако команда mv
не поддерживает одновременное пакетное переименование файлов. Он может переименовывать только один файл за раз. Что бы вы сделали, если бы захотели переименовать несколько файлов одновременно? Не волнуйтесь!
Есть несколько других утилит для пакетного переименования файлов в Linux.
Переименуйте несколько файлов одновременно в Linux
Для массового переименования группы файлов может быть множество команд и утилит. На момент написания этой статьи мне было известно 8 различных способов пакетного переименования файлов. Я буду продолжать обновлять список, если в будущем столкнусь с каким-либо новым методом.
Способ 1. Пакетное переименование файлов с использованием mmv.
Утилита mmv используется для массового перемещения, копирования, добавления и переименования файлов с использованием стандартных подстановочных знаков в Linux и Unix-подобных операционных системах. Он доступен в репозиториях по умолчанию систем на базе Debian.
Чтобы установить mmv в ОС Debian, Ubuntu, Linux Mint и Pop, выполните следующую команду:
sudo apt-get install mmv
Допустим, в вашем текущем каталоге есть следующие файлы.
$ ls
a1.txt a2.txt a3.txt
Теперь вы хотите переименовать все файлы, имена которых начинаются с буквы "a"
, на "b"
. Конечно, вы можете сделать это вручную за несколько секунд.
Но подумайте, есть ли у вас сотни файлов и вы хотите их переименовать? Это довольно трудоемкий процесс. Здесь вам поможет команда mmv.
Чтобы переименовать все файлы, начинающиеся с буквы "a"
на "b"
, просто запустите:
mmv a\* b\#1
Давайте проверим, были ли переименованы файлы или нет.
$ ls
b1.txt b2.txt b3.txt
Как видите, все файлы начинаются с буквы "a"
(т.е. a1.txt
, a2.txt
, a3.txt
) переименованы в b1.txt
, b2.txt
, b3.txt
.
Объяснение
В приведенном выше примере первый параметр (a*
) — это шаблон 'from'
, а второй параметр – шаблон 'to'
(<b#1).
Согласно приведенному выше примеру, mmv будет искать любые имена файлов, начинающиеся с буквы 'a'
, и переименовывать соответствующие файлы в соответствии со вторым параметром, то есть шаблоном 'to'
.
Мы используем подстановочные знаки, такие как '*'
, '?'
и '[]'
, чтобы соответствовать одному или нескольким произвольным символам. Помните, что символы подстановки должны быть экранированы, иначе они будут расширены оболочкой, и mmv их не поймет.
'#1'
в шаблоне 'to'
является подстановочным индексом. Он соответствует первому подстановочному знаку, найденному в шаблоне from
. '#2'
в шаблоне 'to'
будет соответствовать второму подстановочному знаку и так далее.
В нашем примере у нас есть только один подстановочный знак (звездочка), поэтому мы пишем #1
. И знак решетки также должен быть экранирован. Кроме того, вы также можете заключить шаблоны в кавычки.
Вы даже можете переименовать все файлы с определенным расширением в другое расширение. Например, чтобы переименовать все файлы .txt
в формат файлов .doc
в текущем каталоге, просто запустите:
mmv \*.txt \#1.doc
Вот еще один пример. Допустим, у вас есть следующие файлы.
$ ls
abcd1.txt abcd2.txt abcd3.txt
Вы хотите заменить первое вхождение abc
на xyz
во всех файлах в текущем каталоге. Как бы вы поступили?
Простой.
mmv '*abc*' '#1xyz#2'
Обратите внимание, что в приведенном выше примере я заключил шаблоны в одинарные кавычки.
Давайте проверим, действительно ли «abc» заменено на «xyz» или нет.
$ ls
xyzd1.txt xyzd2.txt xyzd3.txt
Видеть? Файлы abcd1.txt, abcd2.txt и abcd3.txt переименованы в xyzd1.txt, xyzd2.txt и xyzd3.txt.
Еще одна примечательная особенность команды mmv — вы можете просто распечатать вывод вместо переименования файлов, используя параметр -n
, как показано ниже.
$ mmv -n a\* b\#1
a1.txt -> b1.txt
a2.txt -> b2.txt
a3.txt -> b3.txt
Таким образом, вы можете просто проверить, что на самом деле будет делать команда mmv, прежде чем переименовывать файлы.
Более подробную информацию можно найти на страницах руководства.
man mmv
Способ 2. Массовое переименование файлов с помощью утилиты переименования.
Утилита rename переименует данные файлы, заменив первое вхождение выражения в их имени на замену.
Команда переименования предустановлена в большинстве Unix-подобных операционных систем. Если он недоступен по умолчанию, выполните следующую команду, чтобы установить его в системах на базе Debian:
sudo apt install rename
Например, у меня есть следующие файлы в текущем каталоге.
$ ls
abcd1.txt abcd2.txt abcd3.txt
Давайте заменим первое вхождение abc
на xyz
везде, где оно встречается. Для этого запустите:
rename 's/abc/xyz/' *
Теперь проверьте, были ли внесены изменения с помощью команды ls
.
$ ls
xyzd1.txt xyzd2.txt xyzd3.txt
Иногда вы можете просто распечатать вывод вместо переименования файлов. Если да, используйте флаг -n
, чтобы отобразить, какие переименования могут произойти без их выполнения:
$ rename -n 's/abc/xyz/' *
rename(abcd1.txt, xyzd1.txt)
rename(abcd2.txt, xyzd2.txt)
rename(abcd3.txt, xyzd3.txt)
Как видите, приведенная выше команда не внесла никаких изменений, а просто показывает, какие переименования будут происходить.
Вы можете принудительно переименовать задачу, даже если эта операция перезапишет существующие файлы, используя флаг -f
, как показано ниже.
rename -f 's/abc/xyz/' *
Если вы не хотите перезаписывать файлы, вы можете просто преобразовать их в прописные или строчные буквы (и наоборот), чтобы избежать ошибок «уже существует».
Чтобы преобразовать все имена файлов в нижний регистр, выполните следующие действия:
rename 'y/a-z/A-Z/' *
Проверим, внесены ли изменения.
$ ls
ABCD1.TXT ABCD2.TXT ABCD3.TXT
Да, буквы в именах файлов изменены с строчных на прописные.
Аналогично, чтобы преобразовать имена файлов в нижний регистр, запустите:
rename 'y/A-Z/a-z/' *
Мы также можем удалить все пустые строки в имени файла. Например, у меня есть следующий файл.
ls
Clouds of Sunset.mp3
Чтобы удалить все пробелы в указанном выше имени файла, запустите:
rename "s/ *//g" *
Теперь в имени файла нет пробелов.
ls
CloudsofSunset.mp3
Замените пробелы подчеркиваниями:
rename 's/\s+/_/g' *
Возможно, вы захотите изменить расширение файла, но не переименовывать имена файлов. Это также возможно. Следующая команда переименует все файлы *.txt
в *.doc
.
rename 's/\.txt$/.doc/' *.txt
Проверьте изменения с помощью команды ls:
$ ls
abcd1.doc abcd2.doc abcd3.doc
Чтобы удалить расширение во всех файлах, соответствующих .txt, запустите:
rename 's/\.txt$//' *.txt
Более подробную информацию можно найти на страницах руководства.
man rename
Способ 3. Переименуйте файлы с помощью renameutils.
renameutils — это набор программ, предназначенных для быстрого и простого пакетного переименования файлов и каталогов.
Renameutils состоит из следующих пяти программ:
- qmv (быстрый ход),
- qcp (быстрое копирование),
- imv (интерактивное движение),
- icp (интерактивная копия),
- deurlname (удалить URL).
Установите renameutils в Linux
Renameutils доступен в репозиториях по умолчанию большинства дистрибутивов Linux. Чтобы установить его в системах на базе Arch, включите репозиторий сообщества и запустите:
sudo pacman -Syu renameutils
В системах на базе Debian:
sudo apt install renameutils
Теперь давайте посмотрим несколько примеров.
1. квм
Программа qmv откроет имена файлов в каталоге в текстовом редакторе по умолчанию и позволит вам редактировать их.
У меня есть следующие три файла в каталоге с именем «ostechnix».
$ ls ostechnix/
abcd1.txt abcd2.txt abcd3.txt
Чтобы переименовать имена файлов в каталоге «ostechnix», просто выполните:
qmv ostechnix/
Теперь измените имена файлов по своему усмотрению. Вы увидите предварительный просмотр в реальном времени при редактировании имен файлов.
Альтернативно вы можете перейти в каталог и просто запустить 'qmv'
.
Открыв файлы, вы увидите два столбца, как показано на следующем снимке экрана.
Массовое переименование файлов с помощью qmv
В левом столбце отображаются имена исходных файлов, а в правом столбце отображаются имена назначения (имена выходных файлов, которые вы получите после редактирования).
Теперь переименуйте все выходные имена справа по своему усмотрению.
Массовое переименование файлов с помощью qmv
После переименования имен файлов сохраните и закройте файл.
Наконец, вы увидите следующий вывод:
Plan is valid.
abcd1.txt -> xyzd1.txt
abcd2.txt -> xyzd2.txt
abcd3.txt -> xyzd3.txt
Regular rename
abcd1.txt -> xyzd1.txt
abcd2.txt -> xyzd2.txt
abcd3.txt -> xyzd3.txt
Теперь проверьте, действительно ли были внесены изменения, с помощью команды 'ls'
:
$ ls ostechnix/
xyzd1.txt xyzd2.txt xyzd3.txt
Видеть? Все файлы переименованы. Не только файлы, renameutils также переименовывает имена каталогов.
Вот краткая видео-демонстрация программы qmv:
Массовое переименование файлов с помощью qmv
Если вы не хотите редактировать имена файлов в формате двух столбцов, используйте следующую команду, чтобы отобразить только столбец целевого файла.
qmv -f do ostechnix/
Где '-f'
относится к формату
и 'do'
относится к только для места назначения
.
Теперь вы увидите только столбец назначения. В этом столбце мы вносим изменения.
Отображать столбец файла назначения только в qmv
После этого сохраните и закройте файл.
Более подробную информацию можно найти на страницах руководства.
man qmv
2. qcp
Программа qcp работает аналогично qmv, но копирует файлы, а не переименовывает их. В этом случае вы получите два экземпляра одного и того же файла. Это означает, что он сохранит как оригинальные, так и дубликаты файлов.
qcp ostechnix/
Переименуйте имена файлов, указанные справа. Сохраните и закройте файл. Наконец, проверьте изменения, внесенные с помощью команды ls:
$ ls ostechnix/
abcd1.txt abcd2.txt abcd3.txt xyzd1.txt xyzd2.txt xyzd3.txt
Более подробную информацию можно найти на страницах руководства.
man qcp
3. имв
Программа imv позволяет нам интерактивно переименовывать имена файлов. Очевидно, это не для массового переименования. Файлы можно было переименовывать только один за другим.
imv ostechnix/abcd1.txt
Отредактируйте имя файла по своему усмотрению и нажмите ENTER, чтобы переименовать его.
Переименуйте файлы с помощью imv
Более подробную информацию можно найти на страницах руководства.
man imv
4. ИКП
Программа icp аналогична imv
, но она копирует файлы, а не перемещает их.
Пример :
icp ostechnix/abcd1.txt
Дополнительные варианты использования и команды можно найти на страницах руководства.
man icp
Я не знаю, зачем разработчики добавили эти две утилиты, хотя мы можем сделать то же самое, используя mv
и cp
команда.
5. имя_адреса
Программа deurlname удаляет символы URL-кодировки (например, %20
, обозначающие пробел) из имен файлов. Некоторые программы, например w3m, имеют тенденцию сохранять эти символы в закодированном виде в сохраненных файлах.
Вы можете использовать этот инструмент для очистки имен файлов, загруженных из Интернета.
Взгляните на следующий файл.
$ ls
omg%20ponnu%20ily%20kannu.mp3
В имени файла есть специальные символы и цифры. Если вы очистите его, просто запустите:
deurlname omg%20ponnu%20ily%20kannu.mp3
Теперь посмотрите, как изменилось имя файла.
$ ls
omg ponnu ily kannu.mp3
Имя файла чистое и читаемое.
Обратитесь к справочным страницам для получения более подробной информации.
man deurlname
Также посетите веб-сайт проекта, указанный в конце этого руководства.
Способ 4. Переименуйте несколько файлов одновременно с помощью vimv
Как следует из названия, Vimv — это утилита командной строки для массового переименования файлов с помощью редактора Vim. Вы, конечно, можете сменить редактор, изменив значение переменной среды $EDITOR
.
Чтобы установить Vimv, git клонируйте репозиторий:
git clone https://github.com/thameera/vimv.git
Скопируйте двоичный файл vimv в свой ` PATH
, например /usr/local/bin/
.
sudo cp vimv/vimv /usr/local/bin/
Наконец, сделайте его исполняемым:
sudo chmod +x /usr/local/bin/vimv
Теперь перейдите в каталог и выполните следующую команду, чтобы отредактировать имена файлов.
vimv
Вы увидите имена файлов в редакторе Vi. Нажмите i, чтобы переключиться в интерактивный режим и редактировать имена файлов так же, как вы редактируете текст в редакторе Vi. После этого нажмите клавишу ESC
и введите :wq
, чтобы сохранить изменения и выйти.
Теперь файлы внутри каталога следует переименовать. Вот короткое видео-демо.
Массовое переименование файлов с помощью Vimv
Для получения более подробной информации обратитесь к репозиторию проекта GitHub, указанному в конце этого руководства.
Способ 5. Пакетное переименование файлов с помощью Emacs
Если у вас есть система с установленным редактором Emacs, вы можете легко выполнить пакетное переименование, выполнив следующие действия.
1. Откройте редактор Emacs.
2. Нажмите Alt+x
, введите следующую команду и нажмите ENTER, чтобы переключиться в wdired-mode
(сокращение от «режим редактора каталогов с возможностью записи»).
dired
3. Введите путь к каталогу (например, /home/sk/ostechnix
), который содержит файлы для переименования, и нажмите клавишу ENTER
.
4. Затем нажмите Ctrl+x
и Ctrl+q
, чтобы переключиться в режим чтения и записи.
5. Теперь переименуйте файлы. После этого нажмите Ctrl+c
и Ctrl+c
(два раза), чтобы сохранить изменения. Чтобы отменить изменения, нажмите Ctrl+c
и Ctrl+k
.
Посмотрите демонстрационное видео:
Массовое переименование файлов с помощью Emacs
Видеть? Переименовать несколько файлов одновременно очень просто.
Способ 6. Массовое переименование файлов с помощью файлового менеджера Thunar.
Файловый менеджер Thunar по умолчанию имеет встроенную опцию массового переименования.
Thunar доступен в репозиториях по умолчанию большинства дистрибутивов Linux.
Чтобы установить его в системах на базе Arch, запустите:
sudo pacman -S thunar
В Fedora, RHEL, CentOS, AlmaLinux, Rocky Linux:
sudo dnf install thunar
Или,
sudo yum install thunar
В openSUSE:
sudo zypper install thunar
В Debian, Ubuntu, Linux Mint:
sudo apt-get install thunar
После установки вы можете запустить утилиту массового переименования из меню или из панели запуска приложений. Чтобы запустить его из Терминала, используйте следующую команду:
thunar -B
Вот как выглядит массовое переименование.
Утилита массового переименования Thunar
Нажмите знак плюса и выберите список файлов, которые вы хотите переименовать. Массовое переименование позволяет переименовать имя файла, суффикс файла или имя и суффикс файла.
Thunar в настоящее время поддерживает следующие средства массового переименования:
- Вставить дату или время
- Вставить или перезаписать
- Нумерация
- Удалить персонажей
- Поиск и замена
- Верхний регистр Нижний регистр
Когда вы выберете один из этих критериев в раскрывающемся списке, вы увидите предварительный просмотр изменений в столбце Новое имя, как показано на снимке экрана ниже.
Массовое переименование файлов с помощью Thunar
Выбрав критерии, нажмите кнопку Переименовать файлы, чтобы переименовать файлы.
Вы также можете открыть программу массового переименования из Thunar, выбрав два или более файлов. Выбрав файлы, нажмите F2
или щелкните правой кнопкой мыши и выберите Переименовать
.
Рекомендуем прочитать:
- [Советы Bash] Переименовывайте файлы без двойного ввода полного имени в Linux
Способ 7 — переименовать список файлов с помощью KRename
KRename — это пакетное средство переименования файлов, которое может переименовывать список файлов на основе набора выражений. Он позволяет переименовывать большое количество файлов, просто добавляя последовательность цифр или меняя регистр.
KRename специально разработан и устанавливается по умолчанию в дистрибутивах KDE. Вы также можете установить его и в другие дистрибутивы Linux.
Например, чтобы установить KRename в Fedora, просто запустите:
sudo dnf install krename
Запустите приложение KRename из панели запуска приложений или меню и добавьте все файлы, которые нужно переименовать, в раздел Файлы.
Добавить файлы в KRename
Убедитесь, что в разделе Место назначения выбран параметр «Переименовать входные файлы».
Выберите опцию переименования входных файлов.
В разделе «Плагины» вы можете выбрать любые плагины по вашему выбору, которые предоставляют различные теги при переименовании файлов.
KПереименование раздела плагинов
В последнем разделе раздела вы можете выбрать схему переименования, которую будете использовать. Внизу вы увидите предварительный просмотр в зависимости от выбранной вами схемы. Если вы согласны с выбранными параметрами, нажмите кнопку «Готово», чтобы переименовать файлы.
Массовое переименование файлов с помощью Krename
Переименованные файлы будут сохранены в том же месте.
KRename — многофункциональная утилита переименования. У него так много возможностей при переименовании файлов. Большинство опций говорят сами за себя.
Способ 8. Переименуйте несколько файлов и папок с помощью интеллектуального переименования файлов.
Smart File Renamer — это графическая программа для одновременного переименования нескольких файлов. Используя интеллектуальное переименование файлов, вы можете легко и быстро переименовывать файлы и каталоги одновременно парой щелчков мыши. Это кроссплатформенное приложение, поддерживающее Linux, macOS и Windows. В отличие от других программ, это уместно. Бесплатная версия имеет лишь ограниченный функционал.
Smart File Renamer доступен в виде пакета Snap. Вы можете установить его с помощью следующей команды:
sudo snap install smart-file-renamer
После установки запустите его из меню или панели запуска приложений. Добавьте файлы и каталоги, которые хотите переименовать, и нажмите кнопку «Переименовать» внизу.
Умное переименование файлов
Он поддерживает множество правил и фильтров для пакетного переименования. Просто выберите их в правой части окна приложения и нажмите кнопку «Переименовать».
Заключение
Вот и все! В этом руководстве мы обсудили 8 способов массового переименования файлов в Linux. Мы предоставили как командную строку, так и графические программы для переименования нескольких файлов за один раз. Просто выберите тот, который вам подходит, и приступайте к работе.
И это все на данный момент. Надеюсь, это было полезно. Знаете ли вы какой-нибудь другой способ добавить в этот список? Пожалуйста, укажите их в разделе комментариев ниже. Я проверю и обновлю это руководство соответствующим образом.
Ресурсы:
- Переименование веб-сайта
- Репозиторий Vimv на GitHub
- Умное переименование файлов
- KПереименовать