Why the difference between the results with "file --mime-type" and "xdg-mime query filetype"?
@jdpipe appears to be correct regarding the behavior of xdg-mime
and file
. There is another utility mimetype
that behaves similarly to xdg-mime
.
As far as which utility to "trust", it's usually fine to just use mimetype
or xdg-mime
. However, if you are concerned that a file may have the wrong extension, use file
because it examines the contents of the file before reporting its type. For example, if a png
is renamed as jpg
, file
correctly reports "image/png", but xdg-mime
and mimetype
both incorrectly report "image/jpeg".
As noted by @db429, it appears both utilities are correct for the kmz
file you cite. Google Earth creates kmz
files, which are also renamed zip
files. What you want to do with the information determines which application to use. If you want to extract the contents, then file
tells you to go ahead and use unzip
. If you want to view and use the information as originally intended, use Google Earth or another program capable of using kmz
files.
Regarding the iso
file, I do not know why xdg-mime
is telling you model/x.stl-binary
. On my computer, it reports application/x-cd-image
. Also, using file
without the --mime-type
flag reports additional information that confirms it is some type of disk image. Perhaps it would be helpful to update the mime database:
sudo update-mime-database /usr/share/mime
The xdg-mime
utility from xdg-utils
is a more comprehensive program that takes into account your desktop environment (GNOME and relatives, or KDE). In some cases it makes a call to the file
utility, but in other cases it looks up the mimetype database for your particular system.
The file
utility, as far as I can tell, only looks inside your file, it doesn't look at the filename. Hence the .kmz
file, is recognised as a zip file. file
makes use of 'magic numbers' which are associated with particular file types, eg the magic string P5
at the start of a file is associated with PGM images from the Netpbm library.
The mimetype database knows about higher-level filetypes, as identified using filename extensions, and can be user-customised. When new programs are installed, the mimetype database is extended and will give answers that might not have been given before certain software was installed. To my knowledge, that behaviour doesn't happen with the file
command.
If you want to read more, the xdg-mime
details are here -- source code. You can see that it calls file
in some cases.
As far as I can tel in 18.04 (more here):
xdg-mime query filetype YOURFILE
is the one that is reliable.
If you need the mime type to have a context menu action with some file manager like Nautilus or Dolphin, look in that file manager under the file's "Properties".
In Dolphin: