Вопрос или проблема
Я пытаюсь использовать detox
следующим образом
detox -s utf_8-only -r -v -n
чтобы обнаружить недопустимые имена файлов на моей системе. Команда в основном работает нормально. К сожалению, она неверно определяет также немецкие умлауты (äöü и т.д.), которые я хотел бы сохранить. Обратите внимание, что они находятся в кодировке utf-8. Могу ли я изменить команду таким образом (например, добавив фильтры), чтобы она игнорировала имена файлов с умлаутами?
Это можно сделать; смотрите мануал detox.tbl(5)
для объяснения таблиц преобразования и /usr/share/detox/*.sample
для некоторых примеров.
В мануалах не хватает хороших примеров мануал detox мануал detoxrc мануал detoxtbl
Я создал свою таблицу (скопировав пример файла)
cp /usr/share/detox/safe.tbl /etc/detox/music.tbl
Редактируйте /etc/detox/music.tbl
# символы, которые оставить без изменений
0x2e .
# удалить эти символы
0x27 '' # '
# символы для преобразования в _
0x7c _ # |
Измените конфигурацию /etc/detox/detoxrc, добавив этот раздел:
sequence "music" {
utf_8;
safe {filename "/etc/detox/music.tbl";};
};
Запустите внутри папки с музыкой… если вас устраивают результаты, уберите флаг ‘-n’ (no-act).
user@host: /mnt/tunes/2017 # detox -s music -r -v -n ./
Возможно, вам придется объединить таблицы и удалить дубликаты для достижения наилучших результатов.
Ответ или решение
Для переименования файлов с некорректными символами в кодировке UTF-8 с использованием утилиты detox
, можно создать пользовательскую таблицу перевода, которая будет игнорировать германские умлауты (ä, ö, ü), чтобы они не были ошибочно признаны некорректными.
-
Создание пользовательской таблицы:
Сначала вам нужно создать копию одной из существующих таблиц для редактирования. В этом примере мы скопируемsafe.tbl
:cp /usr/share/detox/safe.tbl /etc/detox/music.tbl
-
Редактирование таблицы:
Откройте файл/etc/detox/music.tbl
в текстовом редакторе и добавьте правила для переименования. Например, вы можете оставить умлауты и удалить или заменить нежелательные символы. Пример содержимого:# Символы, которые нужно оставить без изменений 0x2e . # Точка, остаётся # Удалить эти символы 0x27 '' # Одинарная кавычка # Символы, которые нужно заменить на _ 0x7c _ # Вертикальная черта
-
Модификация конфигурации
detox
:
Вам нужно отредактировать файл конфигурации/etc/detox/detoxrc
, чтобы добавить новую последовательность. Это позволит утилите использовать вашу кастомизированную таблицу:sequence "music" { utf_8; safe {filename "/etc/detox/music.tbl";}; };
-
Запуск
detox
:
Теперь вы можете запуститьdetox
в директории с музыкой, чтобы проверить, какие изменения будут внесены. Используйте флаг-n
, чтобы увидеть результаты без фактического изменения:detox -s music -r -v -n ./
-
Проверка результатов:
Если вас устраивают результаты, вы можете убрать флаг-n
и выполнить команду снова, чтобы переименовать файлы:detox -s music -r -v ./
-
Оптимизация таблицы:
В зависимости от ваших требований может потребоваться объединение различных таблиц и удаление дубликатов для достижения наилучших результатов.
Таким образом, с помощью detox
и пользовательской таблицы перевода вы сможете переименовать файлы, не теряя германские умлауты, и исключив нежелательные символы.