О блоге

Все новые материалы размещаются на Блогосайте alv.me. Старые - в процессе переноса.

05.08.2008

Krename: массированное переименование файлов

Citkit, 11 октября 2005 г

В этой короткой заметке я хотел бы рассказать о замечательной программе, котороая, правда, не входит в комплект KDE, но создана для работы в этой среде. Программа эта - krename, и предназначена она для массового переименования файлов. Чтобы оценить ее удобство и востребованность, представим себе такую ситуацию.

Дано: массив старых файлов, имена которых записаны в формате DOS в виде 8.HTM, которые нужно включить в новый сайт и, соответственно, переименовать для единообразия в вид имя.html. Пользователя Windows с его Explorer'ом сама мысль о потребном количестве кликов вгонит в дрожь, хотя тут на помощь может прийти Total Commander (спасибо всем, обратившим на это мое внимание).

Для записного юниксоида решение лежит на поверхности: нужно написать простенький скрипт, выполняющий такую операцию за один раз. И это действительно несложно - я некогда для этой цели пользовался оператором for, вероятно, можно придумать и другие способы. Однако такое сиюминутное решение (согласитесь, ведь предложен далеко не самый сложный случай из реально возможных) будет применимо только к файлам с определенными масками имен. Можно, конечно, поднатужиться, и придумать чуть более сложный сценарий, универсальный, допускающий задание произвольных масок - как для заменяемых, так и для заменяющих имен. А это и будет база программы вроде krename - так не лучше ли положиться на нее, снабженную к тому же удобным графическим интерфейсом, нежели изобретать велосипед?

Если последнее покажется более простым остается только установить программу любым способом. Она есть в портах и пакетах FreeBSD, вероятно, в "больших" дистрибутивах Linux, на худой конец - просто собрать из исходников (каковые берутся с сайта http://kde-apps.org). На худой конец - потому, что текущая в данный момент версия krename не всегда собирается с KDE произвольной версии. И потому это тот случай, когда проще воспользоваться штатными средствами дистрибутива - в надежде на то, что в нем совместимость KDE и rename протестирована (во FreeBSD и DragonFlyBSD так оно и есть, за все дистрибутивы Linux не поручусь).

А теперь запускаем krename. При первом запуске он предложит выбор режима - использование мастера (wizard) или режим эксперта. Для начала выберем первый, полуавтоматически, режим: при необходимости переключиться позднее в режим эксперта труда не составит.

Теперь остается выбрать файлы для переименования. Они могут находиться в произвольных местах файловой системы - чтобы включить в список файлы из другого каталога, достаточно прибегнуть к кнопке Добавить. А закончив с отбором - обратиться к кнопке Далее, чтобы перейти к следующему шагу - выбору условий переименования. Ибо krename позволяет (рис. 1) сохранить файлы в исходном каталоге (каталогах) под новыми именами, с сохранением копий под старыми именами или без оного, скопировать или переместить переименованные файлы в произвольный каталог, а также создать сценарий отмены переименования (или - использовать существующий), для чего потребуется только задать его имя - сам сценарий запишется автоматически. А выполнить его можно будет через меню Дополнительно -> Откат старого переименования.

Рис. 1. Krename - выбор условий переименования

На следующей же стадии задается собственно схема переименования (рис. 2). При этом можно частично использовать их старые имена и "расширения", дополнив их суффиксами и (или) префиксами; при этом символы старых имен могут быть преобразованы в верхний или нижний регистр. В качестве суффиксов и префиксов могут использоваться номер, дата или просто произвольный набор символов.

Рис. 2. Определение схемы переименования файлов

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

Рис. 3. Частичная коррекция имен исходных файлов перед их переименованием

Таким образом легко превратить рассеянные по разным каталогам и бессистемно именованные файлы изображений в единый массив иллюстраций к некоему материалу вида ris01.tiff ... ris#.png, собрав их заодно в едином подходящем каталоге (например, ~/book/ill). Однако это - не все, что может делать krename: в режиме эксперта она обретает дополнительные возможности.

Переход в режим эксперта выполняется через меню Настройка -> Настроить krename, где во вкладке Интерфейс следует отметить переключатель Использовать вкладки (для опытных) (рис. 4).

Рис. 4. Переключение режимов krename

В режиме мастера интерфейс krename преобразуется в вид с закладками (рис. 5). В первой из них (Файлы) осуществляется отбор файлов для переименования, во второй (Назначение) - определяются каталоги для помещения переименованных файлов - все точно также, как было описано выше.

Рис. 5. Режим эксперта, закладка Файлы

Схема переименования задается во вкладке Имя файла (рис. 6). Где можно видеть, что, кроме обычной замены по маске, как в режиме мастера, прибавились такие возможности, как переопределение "расширения" (за начало его можно принять не последнюю точку в имени, а первую), при использовании номеров в именах - сделать нумерацию не сквозной, а спропуском произвольных (вписанных руками) номеров, а также задействовать некие функции.

Рис. 6. Режим эксперта, закладка Имя файла

Среди функций программы krename - полтора десятка встроенных, общего назначения, частично задействованных и в режиме мастера (смена регистра символов в именах, например), но большей частью доступных только в режиме эксперта (создание промежуточных каталогов для помещения переименованных файлов, манипуляция с единичными символами в именах). Кроме того, имеются функции специально для обработки контента файлов множества форматов - графических, мультимедийных, текстовых (включая PostScript) и пакетных (RPM, DEB). Так, функции для всех графических форматов позволяют поменять глубину цвета и разрешение (в том числе - раздельно по вертикали или горизонтали), для аудиофайлов - создать список песен в html-формате, и так далее.

Наконец, вкладка Модули позволяет произвести над переименованными файлами дополнительные действия (рис. 7): выполнить в их отношении команду оболочки (из списка или произвольную), изменить атрибуты принадлежности и доступа (в рамках полномочий данного пользователя, конечно), а также времени (atime и mtime), отсортировать переименованные файлы в каталоге и даже изменить набор используемых в именах символов (например, KOI8-R на UTF8).

Рис. 7. Режим эксперта, закладка Модули

Таким образом, возможности программы krename далеко выходят за рамки простых сценариев оболочки. И их реализация путем шелл-скриптинга потребовала бы весьма изощренного программирования (мне, например, такое было бы не по силам). Так что использование ее вполне оправданно даже для опытных пользователей: время, сэкономленное на сочинении собственных скриптов переименования файлов, лучше употребить на совершенствование контента оных...