Где устройства распознавания для типов среды сохранены и как добавить тот?

Как всегда, остерегайтесь grep -r. -r не стандартная опция, и в некоторых реализациях как все кроме очень последних версий GNU grep, это переходит по символьным ссылкам при убывании дерева каталогов, которое обычно является не, что Вы хотите и можете иметь серьезные последствия если, например, существует символьная ссылка на "/" где-нибудь в дереве каталогов.

В философии Unix Вы используете команду для поиска каталогов файлы и другой для рассмотрения ее содержания.

Используя инструменты GNU, я сделал бы:

xargs -r0 --arg-file <(find . -type f -exec grep -lZi string {} +
  ) mv -i --target-directory /dest/dir

Но даже затем, остерегайтесь условий состязания и возможных проблем безопасности при выполнении его как один пользователь на каталоге, записываемом некоторым другим пользователем.

4
06.12.2013, 03:06
1 ответ

Существует 2 библиотеки, которые обычно обрабатывают это. Библиотека общей информации пантомимы является большой. Однако существует также утилита файла, которая обеспечивает 'libmagic'.

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

Что касается того, как добавить запись, местоположение в моей системе /usr/share/mime, хотя это может варьироваться дистрибутивом. В основном Вы просто добавляете XML-файл там, который объясняет, как определить Ваш формат файла (в моей системе, пакеты помещают свои файлы в /usr/share/mime/packages).
После добавления XML-файла используйте update-mime-database команда для регенерации кэша.
(Существует хорошее учебное руководство, доступное на стройплощадке общей информации пантомимы: http://freedesktop.org/wiki/Specifications/AddingMIMETutor/)

Их файл в качестве примера похож на это:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="image/png">
         <comment xml:lang="en">PNG image</comment>
         <comment xml:lang="af">png beeld</comment>
         ...
         <magic priority="50">
                <match type="string" value="\x89PNG" offset="0"/>
         </magic>
         <glob pattern="*.png"/>
  </mime-type>
</mime-info>

Общие ресурсы, такие как полная спецификация XML-файла лучше всего получены из стройплощадки также: http://freedesktop.org/wiki/Specifications/shared-mime-info-spec/

3
27.01.2020, 20:58
  • 1
    Существует также/etc/mime.types, но я думаю, что это связано с mailcap. –  slm♦ 06.12.2013, 07:59
  • 2
    @slm да, я не уверен что использование /etc/mime.types. Это только содержит имена пантомимы и расширения файла, недостаточно для идентификации всех типов файлов. libmagic и базы данных общей информации пантомимы также определяют на основе содержания файла. –  Patrick 06.12.2013, 08:02
  • 3
    Тот файл является частью mailcap пакета. От об/мин desc.: "mailcap файл используется метапочтовой программой. Метапочта читает mailcap файл, чтобы определить, как это должно отобразить нетекст или мультимедийный материал. В основном mailcap связывает конкретный тип файла с конкретной программой, которую почтовый агент или другая программа могут назвать для обработки файла. Mailcap должен быть установлен, чтобы позволить определенным программам мочь обработать нетекстовые файлы". –  slm♦ 06.12.2013, 08:05

Теги

Похожие вопросы