Я хочу определить формат файла входного файла, заданного моим сценарием оболочки - будь то файл .pst
или .dbx
. Я проверил Как проверить расширение имени файла в скрипте bash? . Тот имеет дело с txt
файлами и там даны два метода -
- проверить, является ли расширение
txt
проверьте, является ли тип пантомимы application/text
и т. Д.
Я попытался file -ib <filename>
на .pst
и .dbx
файле, и он показал application/octet-stream
для обоих. Однако, если я просто сделаю file <filename>
, я получу
это для файла dbx -
file1.dbx: Microsoft Outlook Express DBX File Message database
и это для файла pst -
file2.pst: Microsoft Outlook binary email folder (Outlook >=2003)
Итак, мои вопросы -
лучше ли использовать обнаружение типа пантомимы каждый раз, когда на выходе может быть что угодно, и нам нужна правильная проверка?
Как применить проверку типа MIME в этом случае - оба возвращают "application / octet-stream"?
Обновление
Я не хотел делать обнаружение на основе расширений, потому что кажется, что мы просто не можем быть уверены в системе Unix, что файл .dbx действительно является файлом dbx. Поскольку file <filename>
возвращает строку, которая содержит правильную информацию о файле (например, «База данных сообщений о файлах Microsoft Outlook Express DBX»). Это означает, что команда file способна правильно определить тип файла. Тогда почему он не получает правильную информацию в команде file -ib <filename>
?
Будет ли в порядке синтаксический анализ строки file <filename>
? Целесообразно ли предположить, что мне нужно только определить узкий набор файлов для хранения данных семейства outlook (MS Outlook Express, MS Office Outlook 2003, 2007, 2010 и т. Д.). Небольшой текстовый идентификатор, такой как application/dbx
, который можно сравнить, - это все, что мне нужно.