Почему разница между результатами с "file --mime-type" и "xdg-mime query filetype"?
Я пытаюсь найти MIME-тип файла. Я использовал 'file --mime-type' или 'xdg-mime', но получил разные ответы? Я не уверен, чтобы понять?
$ file --mime-type -b gePlugin.kmz
application/zip
$ xdg-mime query filetype gePlugin.kmz
application/vnd.google-earth.kmz
Почему у меня разные ответы? На кого мне положиться?
Почему есть разница?
Спасибо!
ОБНОВЛЕНИЕ (по cipricus):
Пример для файла iso:
file --mime-type -b MY_ISO.iso дает application/x-iso9660-image, что бесполезно с файлом рабочего стола для действий контекстного меню.
xdg-mime query filetype MY_ISO.iso дает model/x.stl-binary, который работает с тем же рабочим столом для действий контекстного меню.
4 ответа
@jdpipe кажется правильным относительно поведения xdg-mime а также file, Есть еще одна утилита mimetype который ведет себя аналогично xdg-mime,
Что касается того, какой утилите "доверять", обычно хорошо просто использовать mimetype или же xdg-mime , Однако, если вы обеспокоены тем, что файл может иметь неправильное расширение, используйте file потому что он проверяет содержимое файла, прежде чем сообщать о его типе. Например, если png переименован в jpg, file правильно сообщает "image/png", но xdg-mime а также mimetype оба неправильно сообщают "изображение / JPEG".
Как отмечает @ db429, похоже, что обе утилиты верны для kmz файл, который вы цитируете. Google Планета Земля создает kmz файлы, которые также переименованы zip файлы. То, что вы хотите сделать с информацией, определяет, какое приложение использовать. Если вы хотите извлечь содержимое, то file говорит вам идти вперед и использовать unzip, Если вы хотите просматривать и использовать информацию, как первоначально предполагалось, используйте Google Планета Земля или другую программу, способную использовать kmz файлы.
Учитывая iso файл, я не знаю почему xdg-mime говорит вам model/x.stl-binary, На моем компьютере это сообщает application/x-cd-image, Кроме того, используя file без --mime-type Флаг сообщает дополнительную информацию, которая подтверждает, что это какой-то тип образа диска. Возможно, было бы полезно обновить базу данных MIME:
sudo update-mime-database /usr/share/mime
xdg-mime утилита из xdg-utils это более комплексная программа, которая учитывает среду вашего рабочего стола (GNOME и родственников, или KDE). В некоторых случаях он звонит file утилита, но в других случаях она ищет базу данных mimetype для вашей конкретной системы.
file Утилита, насколько я могу судить, смотрит только внутри вашего файла, она не смотрит на имя файла. Следовательно .kmz файл, распознается как почтовый файл. file использует "магические числа", которые связаны с определенными типами файлов, например, волшебная строка P5 в начале файл связан с изображениями PGM из библиотеки Netpbm.
База данных mimetype знает о типах файлов более высокого уровня, которые определяются с помощью расширений файлов, и может быть настроена пользователем. Когда устанавливаются новые программы, база данных mimetype расширяется и дает ответы, которые могли не быть предоставлены до того, как было установлено определенное программное обеспечение. Насколько мне известно, такое поведение не происходит с file команда.
Если вы хотите узнать больше, xdg-mime Подробности здесь - исходный код. Вы можете видеть, что это вызывает file в некоторых случаях.
Насколько я могу тел в 18.04 (больше здесь):
xdg-mime query filetype YOURFILE
это тот, который надежен.
Если вам нужно, чтобы MIME-тип имел действие контекстного меню с каким-либо файловым менеджером, таким как Nautilus или Dolphin, посмотрите в этом файловом менеджере под "Свойствами" файла.
В дельфинах:
Короткий веб-поиск с google earth file format дал ответ xdg-mime имеет более точный ответ, но, скорее всего, 'z' обозначает формат файла 'zip', поэтому первое тоже верно.
