fileコマンド

fileコマンド

用途

ファイルの種類を調べる

書式

file [オプション] ファイル名s

主なオプション

  • -b出力結果に対象のファイル名を表示しない
  • -iMIMEタイプで表示する
  • -z圧縮ファイルの中身についても調べる

ちょっとお茶目なfileコマンド

fileコマンドは、ファイルの種類を判定する際に利用します。
判定は、指定されたファイルの先頭部分だけを見て、
ファイルタイプを推測しているので、たまに間違えることもあるようですが、
十分に実用できるコマンドです。

ここでは、テスト用ディレクトリに、
いくつかのファイルタイプのファイルを用意して、
どのような出力が得られるのかを見ていきます。

テストディレクトリの中身

[devi@syslog filetest]$ ls -lt
total 4912
drwxrwxr-x 2 devi devi 4096 Sep 2 20:50 testdir
-rw-rw-r– 1 devi devi 10 Sep 2 20:06 test.txt
-rw-rw-r– 1 devi devi 394 Sep 2 20:05 php.cgi
-rw-r–r– 1 devi devi 54162 Sep 2 20:04 cdb-0.75.tar.gz
-rw-r–r– 1 devi devi 4943462 Sep 2 20:04 httpd-2.2.9.tar.bz2
[devi@syslog filetest]$

1つのファイルのタイプを調べる

[devi@syslog filetest]$ file test.txt
test.txt: ASCII text
[devi@syslog filetest]$
※test.txtは、アスキーファイルであることが分かります

複数のファイルのファイルタイプを調べる

[devi@syslog filetest]$ file php.cgi testdir
php.cgi: PHP script text executable
testdir: directory
[devi@syslog filetest]$
※php.cgiはphpスクリプト、testdirはディレクトリであることが分かります

全てのファイルのファイルタイプを調べる

[devi@syslog filetest]$ file *
cdb-0.75.tar.gz: gzip compressed data, was “cdb-0.75.tar”,
from Unix, last modified: Sun Feb 20 05:47:47 2000, max compression
httpd-2.2.9.tar.bz2: bzip2 compressed data, block size = 900k
php.cgi: PHP script text executable
testdir: directory
test.txt: ASCII text
[devi@syslog filetest]$
※引数の指定によって条件を変えて判定させることができます

出力をMIMEタイプで表示する

[devi@syslog filetest]$ file -i *
cdb-0.75.tar.gz: application/x-gzip
httpd-2.2.9.tar.bz2: application/x-bzip2
php.cgi: text/plain; charset=iso-8859-1
testdir: application/x-not-regular-file
test.txt: text/plain; charset=us-ascii
[devi@syslog filetest]
※大量に調べる時には、こちらの方が見やすくて便利です

fileコマンドは、こんな使い方が便利

新しいアプリケーションをインストールしてみようと、
アプリケーション配布元からアーカイブパッケージを取得してきたけど、
なぜかパッケージの展開ができない?!
なんてこと、経験したことがある方もいるのではないでしょうか。

・試しに、pukiwikiをダウンロードしてみる
[devi@syslog filetest]$ ls -l|grep pukiwiki
-rw-rw-r– 1 devi devi 44495 Sep 2 21:03 pukiwiki-1.4.7_notb.tar.gz
[devi@syslog filetest]$
・何故かtarファイルの展開ができない?
[devi@syslog filetest]$ tar zxvf pukiwiki-1.4.7_notb.tar.gz

gzip: stdin: not in gzip format
tar: Child returned status 1
tar: Error exit delayed from previous errors
[devi@syslog filetest]$

・ファイルの種類を調べてみる
[devi@syslog filetest]$ file pukiwiki-1.4.7_notb.tar.gz
pukiwiki-1.4.7_notb.tar.gz: HTML document text
[devi@syslog filetest]$

持ってきたtar.gzの正体は、HTMLファイルだったことが分かります。
原因は、ソースファイル取得時のURLの指定ミスですね。

無いようで、意外とよくある落とし穴ですので、
頭の片隅に覚えておくときっと役に立ちそうです。

fileコマンドの判定順序や、
magicファイルについての詳しい情報は、
下記のサイトが参考になります。

telblog:fileコマンド
mteramotoの日記:Universal Binary

タグ

2009年9月20日 | コメントは受け付けていません。 | トラックバックURL |

カテゴリー:ファイル操作系コマンド

トラックバック&コメント

コメントは受け付けていません。