What file is it ? - ファイル識別コマンド wfile を作った

これな> zetamatta/wfile: wfile is a command like file of UNIX.

ファイルのマジックナンバーを元にして、ファイルの種類を自動判別するツールである。

  • EXEファイルならば、
$ wfile wfile.exe
wfile.exe: Windows CUI, Executable Image, 64bit Header
  • テキストファイルならば
    • UTF8 or UTF16LE or UTF16BE or Others(MBCS)
    • LF改行 or CRLF改行
    • BOMの有無
$ wfile mbcs exe.go utf8
mbcs: ANSI(MBCS),CRLF text data
exe.go: ANSI(SBCS),LF text data
utf8: UTF8,CRLF text data
  • ZIPファイルなら
    • ファイル名が UTF8 フラグ付きか
    • パスワードありか
$ wfile hoge.zip test.zip
hoge.zip: Zip Archive,utf8-flag-off
test.zip: Zip Archive,utf8-flag-on
  • AutoCAD互換DWGファイルなら
    • 何年版の DWG か
  • その他のファイルなら、

といった情報を表示する。詳しくは引数なしで表示される説明を見よう

wfile.exe - what file is it ?

Usage: wfile.exe {filenames}

Signature database
for *.class:
  \xCA\xFE\xBA\xBE ... Java class file
for *.dwg:
  AC1003 ... AutoCAD EX-II
  AC1006 ... AutoCAD GX-III
  AC1009 ... AutoCAD 12,12,GX-5
  AC1012 ... AutoCAD 13
  AC1014 ... AutoCAD 14
  AC1015 ... AutoCAD 2000,2000i,2002
  AC1018 ... AutoCAD 2004,2005,2006
  AC1021 ... AutoCAD 2007,2008,2009
  AC1024 ... AutoCAD 2010,2011,2012
  AC1027 ... AutoCAD 2013,2014,2015,2016,2017
  AC1032 ... AutoCAD 2018
for *.exe:
  MZ ... Portable Executable
for *.gz:
  \x1F\x8B ... gzip compressed
for *.jpeg:
  \xFF\xD8\xFF\xDB ... JPEG Image
  \xFF\xD8\xFF\xE0\x00\x10JFIF\x00\x01 ... JPEG Image
  \xFF\xD8\xFF\xEE ... JPEG Image
  \xFF\xD8\xFF\xE1 ... JPEG Image
for *.jpg:
  \xFF\xD8\xFF\xDB ... JPEG Image
  \xFF\xD8\xFF\xE0\x00\x10JFIF\x00\x01 ... JPEG Image
  \xFF\xD8\xFF\xEE ... JPEG Image
  \xFF\xD8\xFF\xE1 ... JPEG Image
for *.lzh:
  -lh from 2 ... LHA Archive
for *.pdf:
  %PDF- ... PDF
for *.png:
  \x89PNG\r\n\x1A\n ... Portable Network Graphics
for *.zip:
  PK\x03\x04 ... ZIP Archive

おいおい対応タイプを増やしておく予定