file, strings, zipinfo コマンドで開けないファイルの種類を調べる

便利ワザ

Linux でファイルを調査する際に使うコマンドを解説します。

  • ファイルの種類を調べる file コマンド
  • ファイルの文字列を抽出する strings コマンド
  • ZIP ファイルの情報を見る zipinfo コマンド
  • ZIP ファイルの文字を検索する zipgrep コマンド

などがあります。



ファイルの種類がわからない場合は file コマンドで確認

手元にあるファイルの種類がわからない場合は、file コマンドを使用します。
CentOS でも、Ubuntu でも使用可能です。

HTML ファイルを判定させた場合は、以下の結果が出力されます。

$ file data.html
data.html: HTML document, UTF-8 Unicode text

file コマンドでは「ファイルの中身」を見て判定しています。
そのため、下記のように拡張子がないファイルでも問題ありません。

$ file nazofile
nazofile: Zip archive data, at least v2.0 to extract

種類にもよりますが、Windows 用のプログラムでも判定できます。

$ file notepad.exe
notepad.exe: PE32+ executable (GUI) x86-64, for MS Windows

strings コマンドでファイルに含まれる文字列を抽出

strings コマンドを使うと、ファイル内にある文字列を抽出できます。
ファイルを直接開けなくても何らかのヒントを得られることがあります。

ZIP ファイルを用意した上で、strings コマンドで抽出してみました。
ZIP に含まれているファイル名が取り出せていることが分かります。

$ strings hoge.zip
file01.txtUT
4-5\_
\M!w{
file02.pngUT
file03.mp3UT
R#]K

プログラムのバイナリからも抽出が可能です。
ls コマンドから「help」を含むテキストを抽出しました。

$ strings /bin/ls | grep help
help
Try '%s --help' for more information.
      --help     display this help and exit
General help using GNU software: <http://www.gnu.org/gethelp/>

zipinfo, zipgrep コマンドで ZIP ファイルを調査する

ZIP ファイルについて調査する場合は、zipinfo コマンドも利用可能です。
わざわざ展開することなく、ZIP の中身を見ることができます。

zipinfo <ファイル名> の形式で実行可能です。
以下の ZIP ファイルには3つのテキストファイルが含まれています。

$ zipinfo hoge.zip
Archive:  hoge.zip
Zip file size: 683 bytes, number of entries: 3
-rw-rw-rw-  3.0 unx       71 tx defN 18-Oct-28 22:35 file01.txt
-rw-rw-rw-  3.0 unx       97 tx defN 18-Oct-28 22:35 file02.txt
-rw-rw-rw-  3.0 unx       55 tx defN 18-Oct-28 22:36 file03.txt
3 files, 223 bytes uncompressed, 217 bytes compressed:  2.7%

zipgrep コマンドでは、ZIP に含まれている文字列を検索できます。
例として「2018」をキーワードとして検索します。

$ zipgrep "2018" hoge.zip
file01.txt:2018-10-28 22:00:00

file01.txt にて「2018」を含む文字列がヒットしました。

まとめ

ファイルの調査に使えるコマンドを4つ解説しました。

  • file: ファイルの種類を調べる
  • strings: ファイルに含まれる文字列を抽出する
  • zipinfo: ZIP ファイルの情報を表示する
  • zipgrep: ZIP ファイルに含まれる文字を検索する

開けないファイルを調べる際などにご活用ください。

【関連記事】