62

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?

103

Use file --mime-type -b filename

Look at file --help for more tips.

3

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 $*
2
  • 4
    Use the -b flag or --brief to file instead of piping to awk. – Emil Vikström Jan 30 '17 at 15:36
  • 1
    good point.. fixed! – brad parks Jan 30 '17 at 18:28
1

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).

1
mimetype /path/to/file

Tested in 18.04

2
  • mimetype works in 14.04 and above. – egdavid Jun 22 '20 at 15:37
  • Also only detects the mimetype based on the file extension it seems – Dark Star1 Feb 1 at 15:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.