I'm currently writing a shell script that needs to be able to identify the actual type of files (not their extensions) with the unix "file" utility. However, that tool outputs human readable text which might be somewhat difficult to parse. Before I write something that just matches specific substrings found in its output, is there a better way to approach this problem?
1 Answer
Using the --mime-type
argument to file
gives MIME type which is easier to parse.
$ file --mime-type /etc/passwd
/etc/passwd: text/plain
The -i
option gives a little bit more information (encoding type) if needed:
$ file -i /etc/passwd
/etc/passwd: text/plain; charset=us-ascii
file
should suffice e.g. one way to parse out the character set:raw=$(file -i $1); cset=${raw#*=}
.