Как всегда, остерегайтесь grep -r
. -r
не стандартная опция, и в некоторых реализациях как все кроме очень последних версий GNU grep
, это переходит по символьным ссылкам при убывании дерева каталогов, которое обычно является не, что Вы хотите и можете иметь серьезные последствия если, например, существует символьная ссылка на "/" где-нибудь в дереве каталогов.
В философии Unix Вы используете команду для поиска каталогов файлы и другой для рассмотрения ее содержания.
Используя инструменты GNU, я сделал бы:
xargs -r0 --arg-file <(find . -type f -exec grep -lZi string {} +
) mv -i --target-directory /dest/dir
Но даже затем, остерегайтесь условий состязания и возможных проблем безопасности при выполнении его как один пользователь на каталоге, записываемом некоторым другим пользователем.
Существует 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/
/etc/mime.types
. Это только содержит имена пантомимы и расширения файла, недостаточно для идентификации всех типов файлов. libmagic и базы данных общей информации пантомимы также определяют на основе содержания файла. – Patrick 06.12.2013, 08:02