| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > *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 файл все что ты хочешь и определяй! мне конкретно нужны типы 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) Как составить такую же строчку только для текстовых файлов? там точно знаю нужно дейстовать через какое то смещение... |