Переименование файлов с не-UTF8 символами с помощью detox

Вопрос или проблема

Я пытаюсь использовать 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, можно создать пользовательскую таблицу перевода, которая будет игнорировать германские умлауты (ä, ö, ü), чтобы они не были ошибочно признаны некорректными.

  1. Создание пользовательской таблицы:
    Сначала вам нужно создать копию одной из существующих таблиц для редактирования. В этом примере мы скопируем safe.tbl:

    cp /usr/share/detox/safe.tbl /etc/detox/music.tbl
  2. Редактирование таблицы:
    Откройте файл /etc/detox/music.tbl в текстовом редакторе и добавьте правила для переименования. Например, вы можете оставить умлауты и удалить или заменить нежелательные символы. Пример содержимого:

    # Символы, которые нужно оставить без изменений
    0x2e        .    # Точка, остаётся
    
    # Удалить эти символы
    0x27        ''   # Одинарная кавычка
    
    # Символы, которые нужно заменить на _
    0x7c        _    # Вертикальная черта
  3. Модификация конфигурации detox:
    Вам нужно отредактировать файл конфигурации /etc/detox/detoxrc, чтобы добавить новую последовательность. Это позволит утилите использовать вашу кастомизированную таблицу:

    sequence "music" {
       utf_8;
       safe {filename "/etc/detox/music.tbl";};
    };
  4. Запуск detox:
    Теперь вы можете запустить detox в директории с музыкой, чтобы проверить, какие изменения будут внесены. Используйте флаг -n, чтобы увидеть результаты без фактического изменения:

    detox -s music -r -v -n ./
  5. Проверка результатов:
    Если вас устраивают результаты, вы можете убрать флаг -n и выполнить команду снова, чтобы переименовать файлы:

    detox -s music -r -v ./
  6. Оптимизация таблицы:
    В зависимости от ваших требований может потребоваться объединение различных таблиц и удаление дубликатов для достижения наилучших результатов.

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

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

Капча загружается...