file - determine file type
file [ -m ] [ file ... ]
File performs a series of tests on its argument files in an attempt to
classify their contents by language or purpose. If no arguments are
given, the classification is performed on standard input.
If the -m flag is given, file outputs an appropriate MIME Content-Type
specification describing the type and subtype of each file.
The file types it looks for include directory, device file, zero-filled
file, empty file, Plan 9 executable, PAC audio file, cpio archive, tex
dvi file, archive symbol table, archive, rc script, sh script, Post‐
Script, troff output file for various devices, mail box, GIF, FAX,
object code, C and Alef source, assembler source, compressed files,
encrypted file, English text, compressed image, image, subfont, and
If a file has no apparent format, file looks at the character set it
uses to classify it according to ASCII, extended ASCII, Latin ASCII, or
UTF holding one or more of the following blocks of the Unicode Stan‐
dard: Extended Latin, Greek, Cyrillic, Armenian, Hebrew, Arabic,
Devanagari, Bengali, Gurmukhi, Gujarati, Oriya, Tamil, Telugu, Kannada,
Malayalam, Thai, Lao, Tibetan, Georgian, Japanese, Chinese, or Korean.
If all else fails, file decides its input is binary.
It can make mistakes.