Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > определение типа файлов


Автор: RainMan 29.12.2004, 22:57
Здравствуйте!

Помогите мне пожалуйста с решением вот какой задачи: необходимо определить тип файла.
не тривиальная задача - набираем file <name file> и получаем отчет системы о том что это за файл. все бы хорошо но есть проблемы вот какого плана - на Sparc Solaris - это отчет одного вида на Linux машинах это отчеты другого вида
================================================
<name file> ascii text --> отчет Solaris
<name file> ASCII Text File --> отчет Linux
================================================
(при чем на solaris некоторые типы файлов не определяются (например файл PDF версии 1.4 не поддерживается в Solaris зато поддерживается в Linux)
=============================================================
<name file.pdf> data type --> отчет Solaris
<name file.pdf> Adobe Acrobat File (PDF) v1.4 --> отчет Linux
==============================================================
).

Почитали хелпы по пользоанию комманды file и выяснили что можно подставить так называемый magic файл который и будет транслитировать наши файлы так как мы укажем, то есть указываем опцию
file -m <magic file> <name file> и вроде все будет отлично! (По умолчанию стоит magic файл из определенного места /usr/magic и от туда берется информация о типе файла).

Вроде все просто получается бери да и записывай в свой magic файл все что ты хочешь и определяй! smile вот собственно я и подошел к вопросу - как самому составить этот файл для распознавание своих форматов?
мне конкретно нужны типы PDF и текстовые файлы! (это нужно для того чтобы уйти от стандартного определения файлов и назначить им свой тип)

С PDF более или менее разобрался а вот как понять что мы имеем дело с текстовым файлом? Слышал что это определяется при помощи смещения быйтов или что то в этом роде... как эти смещения узнать и чем заглядывать во внутрь файла???


Извините за столь долгое объяснение... просто хотел чтоб была понятна проблема!

Спасибо

Автор: dargaard 30.12.2004, 01:43
Так как на солярисе и на линуксе отчеты разного вида почему бы просто всегда не использовать magic фаил линукса?

Автор: RainMan 30.12.2004, 09:45
Хочется создать универсальный свой magic файл только для PDF и текстовых файлов чтобы парсить уже известную строку отчета (например "PDF file") а эти magic файлы имеют тенденцию меняться и подстраиваться под другую методологию опять придется...

вот пример своего magic файла для определения всех версий PDF

#this string for all version PDF formats
0 string %PDF PDF file

0 - означает начало файла
string - тип считаемых данных
%PDF - собственно сигнатура файла PDF (она у всех стандартная)
PDF file - описание данного файла (собственно то что и идет в отчет об выполнении кооманды file)


Как составить такую же строчку только для текстовых файлов?
там точно знаю нужно дейстовать через какое то смещение...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)