84

I'm trying to get the mime type of a file from the command line as a printed string (eg. application/vnd.oasis.opendocument.spreadsheet).

I looked up how to do this and found the xdg-mime command.

From reading the man page (man xdg-mime), it seems I should run xdg-mime query filetype FILE. However, when I run this with any file it prints nothing and exits.

Is there a way to fix this? An alternative command?

4 Answers 4

151

Use file --mime-type -b filename

Look at file --help for more tips.

5

The great answer on this page can be put in a function or script like so:

Example

$ mime_type.sh /etc/passwd  
text/plain

mime_type.sh

function mime_type()
{
  file --mime-type -b $*
}

mime_type $*
0
5
mimetype /path/to/file

Tested in 18.04

3
  • mimetype works in 14.04 and above.
    – Mooncake
    Jun 22, 2020 at 15:37
  • 2
    Also only detects the mimetype based on the file extension it seems
    – Dark Star1
    Feb 1, 2021 at 15:21
  • Works in 20.04 but it's like a million times slower than file --mime-type Jun 27, 2021 at 10:52
4

xdg-mime and file query different databases (xdg-mime is more comprehensive). See Why the difference between the results with "file --mime-type" and "xdg-mime query filetype"? for more discussion.

xdg-mime does not work correctly from a non-desktop session (e.g. if you're SSH'd into a machine).

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .