суббота, 17 сентября 2022 г.

Пакетное (массовое) переименование файлов через bash

Задача: переименовать файлы, убрав из их наименований лишние символы. Приводимый пример описывает массовое переименование файлов Classy_Wallpapers_...

При использовании средства массового переименования файлов через Bulk Renamer со временем появилась некоторая неудовлетворённость необходимостью осуществлять ряд однотипных действий применительно к каждому набору файлов (папок с файлами). Поскольку во всех папках присутствуют файлы, содержащие в себе один и тот же набор символов, то для массового переименования файлов в папке было принято решение попробовать воспользоваться средствами bash.  Для его использования необходимо наличие установленной программы rename. Как правило, она уже в системе присутствует, но если её не имеется, то устанавливается командой  sudo apt install -y rename

В итоге получился сценарий (скрипт):

#!/bin/bash
dir=$(zenity --file-selection --directory)
cd "$dir"
rename 's/Classy_Wallpapers_//g' *.jpg
rename 's/__/_/g' *.jpg
exit

🔎   Пояснения. 

dir=$(zenity --file-selection --directory) осуществляет выбор папки (каталога), содержащего файлы, имена которых необходимо обработать, а команда cd "$dir" осуществляет переход в выбранную папку (каталог). Кавычки учитывают пробелы в имени папки или пути к ней.

Далее следуют команды непосредственно замены "чего" на "что".

Команда  rename 's/Classy_Wallpapers_//g' *.jpg  во всех файлах jpg удаляет из названия файлов Classy_Wallpapers_

Команда  rename 's/__/_/g' *.jpg  во всех файлах jpg заменяет символ __ на символ _

Как итог, при массовом переименовании файлов осуществляется 2 действия (запустить скрипт и выбрать папку с файлами) вместо прежних 9. Так как нет необходимо использовать графический интерфейс, то операции замены символов в именах файлов происходит значительно быстрее, чем при использовании массового переименования из комплекта поставки Linux Mint. Команду скрипта (сценария) sh можно "посадить" на горячие клавиши через "Настройка клавиатуры – Комбинации клавиш" либо через программу Autokey.

2 комментария:

  1. Мне кажется просто использовать "rename" в терминале удобнее. Не понял - зачем скрипт.

    ОтветитьУдалить
  2. В примере дана 1 строка. В использованном варианте их было 4. Всё определяется личными предпочтениями. Если вам удобно в терминале, то делайте так как вам удобно. Здесь просто как вариант.

    ОтветитьУдалить