Одновременное переименование группы файлов в Linux

Возможно, вы уже используете команду mv для переименования или перемещения файлов и каталогов в Linux и Unix-подобных операционных системах. Но команда mv не поддерживает одновременное переименование нескольких файлов. Она может переименовывать только один файл за раз. Что бы вы сделали, если бы захотели переименовать несколько файлов одновременно?

Есть еще несколько утилит для пакетного переименования файлов в Linux. В этом руководстве мы узнаем, как переименовать сразу несколько файлов в Linux с помощью различных инструментов. Все приведенные здесь примеры протестированы в Ubuntu 18.04 LTS, однако они должны работать в любых операционных системах Linux.

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

Метод 1 — Использование mmv

MMV — утилита для перемещения, копирования и переименовывания групп файлов , используя стандартные подстановочные знаки в Linux и Unix-подобных операционных систем. Она доступна в стандартных репозиториях систем на основе Debian. Чтобы установить её в Debian, Ubuntu, Linux Mint, выполните следующую команду:

$ 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\*) — это шаблон «от», а второй параметр — шаблон «до» (b\#1). В соответствии с приведенным выше примером, mmv будет искать любые имена файлов, начинающиеся с буквы «a», и переименовывать совпадающие файлы в соответствии со вторым параметром, то есть шаблоном «to». Мы используем подстановочные знаки, такие как ‘*’, ‘?’ и ‘[]’, чтобы соответствовать одному или нескольким произвольным символам. Помните, что вы должны избегать подстановочных знаков, иначе они будут расширены оболочкой, и mmv их не поймет.

«#1» в шаблоне «Кому» — это индекс с подстановочными знаками. Он соответствует первому подстановочному знаку, найденному в шаблоне «от». «#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

rename утилита переименования группы файлов, заменяет первое вхождение в выражении на второе.

Команда 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 состоит из следующих пяти программ:

  1. qmv (быстрое перемещение),
  2. qcp (быстрое копирование),
  3. imv (интерактивный перемещение),
  4. icp (интерактивное копирование),
  5. deurlname (удалить URL).

Установка renameutils

Renameutils доступен в репозиториях по умолчанию большинства дистрибутивов Linux. Чтобы установить его в системах на базе Arch, включите репозиторий сообщества и запустите:

$ sudo pacman -Syu renameutils

В системах на основе Debian:

$ sudo apt install renameutils

Теперь давайте посмотрим на несколько примеров.

1. qmv

Программа qmv откроет имена файлов в каталоге в текстовом редакторе по умолчанию и позволит вам редактировать их.

У меня есть следующие три файла в каталоге с именем «ostechnix».

$ ls ostechnix / 
abcd1.txt abcd2.txt abcd3.txt

Чтобы переименовать имена файлов в каталоге ‘ostechnix’, просто выполните:

$ qmv ostechnix /

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

Кроме того, вы можете перейти в каталог с помощью cd и просто запустить qmv.

Открыв файлы, вы увидите два столбца, как показано на следующем снимке экрана.

Групповое переименование файлов с помощью qmv
Групповое переименование файлов с помощью 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

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

$ qmv -f do ostechnix /

Где «-f» относится к формату, а «do» относится только к месту назначения .

Теперь вы увидите только столбец назначения. Это столбец, в котором мы вносим изменения.

После этого сохраните и закройте файл.

Для получения дополнительных сведений см. справочные страницы.

$ 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 позволяет нам переименовывать имена файлов в интерактивном режиме. Очевидно, это не для массового переименования. Вы сможете переименовывать файлы только по одному.

$ imv ostechnix / abcd1.txt

Отредактируйте имя файла по своему усмотрению и нажмите ENTER, чтобы переименовать его.

Для получения дополнительных сведений см. Справочные страницы.

$ man imv

4. icp

Программа icp такая же, как imv, но копирует файлы, а не перемещает их.

Пример:

$ icp ostechnix / abcd1.txt

Дополнительные варианты использования и команды см. на страницах руководства.

$ man icp

Я не знаю, зачем разработчики добавили эти две утилиты, в то время как мы можем сделать то же самое с помощью команд mv и cp .

5. deurlname

Программа 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

Теперь перейдите в каталог и выполните следующую команду, чтобы переименовать имена файлов. Вы увидите имена файлов в редакторе Vi. Нажмите i, чтобы переключиться в интерактивный режим и отредактируйте имена файлов так же, как вы редактируете текст в редакторе Vi. После этого нажмите клавишу ESC и введите :wq для сохранения и выхода.

Теперь файлы внутри каталога должны быть переименованы. Вот короткое видео-демо.

Для получения дополнительных сведений см. репозиторий проекта на 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 .

Посмотрите демонстрационное видео:

Переименовать сразу несколько файлов очень просто.

Метод 6 — Использование файлового менеджера Thunar

Файловый менеджер Thunar имеет встроенное групповое переименование по умолчанию.

Thunar доступен в репозиториях по умолчанию большинства дистрибутивов Linux.

Чтобы установить его в системах на базе Arch, запустите:

$ sudo pacman -S thunar

В RHEL, CentOS:

$ sudo yum install thunar

В Fedora:

$ sudo dnf install thunar

В openSUSE:

$ sudo zypper install thunar

В Debian, Ubuntu, Linux Mint:

$ sudo apt-get install thunar

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

$ thunar -B

Так выглядит массовое переименование.

 

Щелкните на знак плюса и выберите список файлов, которые нужно переименовать. Массовое переименование может переименовывать имена файлов, суффикс файлов или и имя, и суффикс файлов. В настоящее время Thunar поддерживает следующие массовые переименования:

  • Вставить дату или время
  • Вставить или перезаписать
  • Нумерация
  • Удалить символы
  • Искать и заменить
  • Верхний регистр Нижний регистр

Когда вы выберете один из этих критериев из раскрывающегося списка, вы увидите предварительный просмотр ваших изменений в столбце « Новое имя» , как показано на снимке экрана ниже.

Как только вы выберете критерии, нажмите на опцию « Переименовать файлы», чтобы переименовать файлы.

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

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