61

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?

95

Use file --mime-type -b filename

Look at file --help for more tips.

| improve this answer | |
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 $*
| improve this answer | |
  • 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).

| improve this answer | |
1
mimetype /path/to/file

Tested in 18.04

| improve this answer | |
  • mimetype works in 14.04 and above. – egdavid Jun 22 at 15:37

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.