Как определить тип файла в Linux? - PullRequest
3 голосов
/ 11 марта 2009

Если кто-то отправит мне документ (.pdf, .doc, .xls, ppt, .ogg, mp3, png и т. Д.) Без расширения, как я могу определить тип файла? Команда / usr / bin / file не всегда дает правильные предположения или просто говорит, что у меня есть документ Microsoft Office. Я хотел бы знать точно, чтобы я мог добавить расширение к имени файла.

Ответы [ 4 ]

7 голосов
/ 11 марта 2009

Вы можете придумать свои собственные правила, добавив их в / etc / magic

man файл для более подробной информации. Трудно всегда получить их правильно, однако, я добился разумного успеха.

3 голосов
/ 11 марта 2009

Попробуйте mimetype (1).

Для Perl посмотрите на File :: MimeInfo .

1 голос
/ 11 марта 2009

Некоторые другие постеры пока что пренебрегают несколькими вещами.

File :: MimeInfo использует ту же базу данных MimeInfo, что и «file» для идентификации файлов. Так что вряд ли что-то сделаете иначе.

File :: Type , вероятно, будет интересен, поскольку он опирается только на себя, но это приводит к длинному сценарию comics , полному операторов if. Но это, по самой своей природе, вряд ли охватывать вещи, которые «файл» уже не покрывает.

Лучшее, что вы можете сделать с неизвестными типами файлов, это попытаться открыть их с помощью шестнадцатеричного редактора или пропустить через «строки» и посмотреть, узнаете ли вы что-нибудь. Если вам удастся определить файл, вы можете выбрать File :: Type в качестве решения, потому что, насколько я могу судить, его, по крайней мере, легко расширить.

1 голос
/ 11 марта 2009

Вы можете использовать модуль Perl: Файл :: Тип

...