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 ファイルに含まれる文字を検索する
開けないファイルを調べる際などにご活用ください。
【関連記事】
⇒ JSON を整形・加工する jq コマンド解説
⇒ nginx に繋がらない場合の調査方法
⇒ curl の便利なオプションを解説