- Linux Mint を始めたばかりの人が抑えておくべき5つのこと
- 「mintUpdate」アップデートマネージャー のレベルの意味
- フリーズしたアプリの強制終了の仕方 〜 kill コマンド〜
- CPU と OS が 32 bit なのか 64 bit なのかを確認する「lscpu コマンド」
- メモリー(RAM)の規格・周波数・全容量・空き容量・エラーの有無を調べる
- 自分の Mint のバージョン/コードネーム/Ubuntu のバージョン/コードネームを確認する方法
- Mint Tools を使い倒す
- アプリ/ソフトのアンインストールと更新する方法
- X-Apps について少し知っておこう
- 「'gksu' not found」 廃止された gksu の代わりの方法
- Linux Mint 18 : DVD/Blu-ray リッピングソフト「MakeMKV」
- Mint 19.x: 「K3b」でブルーレイディスクに焼く方法
- Mint 18: 「avconv」でデスクトップの録画も、動画や音楽の変換も行う
- Mint 19.x : 画像・音楽・動画の変換これ一本「Ciano」
- Mint 18.2 : 字幕を同時に二つ表示できる多機能な動画プレイヤー「SMPlayer」
- Mint 18 : CDDB に Freedb を利用している CD リッピングソフト「Asunder」
- Mint 19.x : 音楽ファイルのタグ編集ツール「Kid3」
- Linux Mint 19.x : インストールすべき Rhythmbox プラグイン 9 選
- Linux Mint 18.3 : VirtualBox に無料の Windows を合法的にインストールする方法
- Linux Mint 18: Wine の導入
- Linux Mint 18: Wine で「DVD Shrink」をインストール
- Linux Mint 18: Wine で「DVD Decrypter」をインストール
- Linux Mint 19.x: 5ch専ブラ「Jane Style」は Wine で普通に使える
- Linux Mint 18 : 「winetricks」を使って「Adobe Air」をインストールし「はがきデザインキット」を使う
- Linux Mint 19.x: 画像縮小 Adobe AIR アプリ「縮小専用」を使う
- Linux Mint 18: 「PlayOnLinux」を使い「Amazon Kindle」をインストールする
- Linux Mint 18.3 : ハイレゾ音源対応 Windows ユーザーに人気の「Foobar2000」をインストール & 文字化け対策
- Mint 19.x : 画像ビューア「IrfanView」を簡単にインストールして使う
- Linux Mint 18.3 : Windows アプリを Flatpak 形式でパッケージングするプロジェクト「winepak」
2022.09.19 Monday
2017.03.09 Thursday
Linux Mint : ファイルの拡張子/形式/種類を特定「file」コマンド | 00:48 |
ファイルの拡張子を見ることで、その拡張子からファイル形式を確認する人が大半だと思います。例えば、拡張子が jpg、gif、png、bmp であれば、そのファイルは画像ファイルだと推測することができ、zip であれば、アーカイバ―によって zip に圧縮されていることが分かります。
ところが、拡張子が全く間違っていたり、そもそも拡張子がついていない場合、どうやってファイル形式を特定したらいいでしょうか。
Linux にはファイル形式を特定するために file コマンドが用意されています。
ドキュメントによると file コマンドは1つのファイルに対して3つのテストを行います:
*ファイルシステムテスト
*マジックテスト
*言語テスト
ファイルシステムテストでは stat システムコールの戻り値を調べて、ファイルが空か否か、特別なファイルか否かを調べます。システムヘッダーファイル <sys/stat.h> でファイル形式を特定することができれば、そのファイル形式を返します。
マジックテストではファイルの中身の最初の数バイトを調べて、ファイル形式の特定に役に立ちそうなものを調べます。ファイルとファイル形式が一致するかどうか特定するのに使われるファイルが /etc/magic, /usr/share/misc/magic.mgc, /usr/share/misc/magic に置かれています。これらは $HOME/.magic.mgc、$HOME/.magic をホームディレクトリに置くことで書き換えることができます。
言語テストはテキストファイルかどうかを調べます。ファイルの数バイトを調べて ASCII, UTF-8, UTF-16, あるいはほかのフォーマットなのかを調べます。文字セットが分かったら、C言語なのか Python なのかなど色々な言語で調べます。
file コマンドは次のようにして使います:
file ファイル名
例えば miku というファイルのファイル形式を特定したい場合は
file miku
出力:
画像ファイルであることが分かります。もっと正確に言えば、PNG 形式です。
ファイル形式によって、異なる結果を出力します:
*ISO ファイル - DOS/MBR boot sector ISO 9660 CD-Rom filesystem data 'label' (bootable); partition 2 : ID = 0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,4,63) startsector 1496, 4736 sectors
*ODS ファイル - OpenDocument Spreadsheet
*PDF ファイル - PDF Document, version 1.4
*CSV ファイル - ASCII text, with very long lines, with CRLF line indicators
デフォルトでは file コマンドはファイル名とともに、詳細を表示しますが、ファイル名が要らない場合は -b を指定します:
file -b miku
出力:
デリミタ(区切り文字)を変更することもできます:
file -F '|' miku
出力:
-i あるいは --mime を指定することで今風の MIME タイプの文字列にします:
file -i miku
出力:
MIME タイプの例:
MIME タイプ一覧 : Media Types
スクリプトも何の言語か特定できます:
file /usr/bin/mintinstall
出力:
テキストエディターを使って、複数のファイル名を書き込んで、例えば「testfiles」という名前で保存します。testfiles に例えば、次のファイルを書き込みます:
保存したら、次のコマンドを実行します:
file -f testfiles
出力:
デフォルトでは、圧縮ファイルに対して file コマンドを使うと:
そこで、 -z を指定することで書庫の中のファイルのファイル形式まで表示することができます:
file -z file.zip
出力:
Audio ファイルで MPEG layer III であることから mp3 が含まれていることがわかりました。
参考元 : about tech
ところが、拡張子が全く間違っていたり、そもそも拡張子がついていない場合、どうやってファイル形式を特定したらいいでしょうか。
Linux にはファイル形式を特定するために file コマンドが用意されています。
file コマンドの挙動
ドキュメントによると file コマンドは1つのファイルに対して3つのテストを行います:
*ファイルシステムテスト
*マジックテスト
*言語テスト
ファイルシステムテストでは stat システムコールの戻り値を調べて、ファイルが空か否か、特別なファイルか否かを調べます。システムヘッダーファイル <sys/stat.h> でファイル形式を特定することができれば、そのファイル形式を返します。
マジックテストではファイルの中身の最初の数バイトを調べて、ファイル形式の特定に役に立ちそうなものを調べます。ファイルとファイル形式が一致するかどうか特定するのに使われるファイルが /etc/magic, /usr/share/misc/magic.mgc, /usr/share/misc/magic に置かれています。これらは $HOME/.magic.mgc、$HOME/.magic をホームディレクトリに置くことで書き換えることができます。
言語テストはテキストファイルかどうかを調べます。ファイルの数バイトを調べて ASCII, UTF-8, UTF-16, あるいはほかのフォーマットなのかを調べます。文字セットが分かったら、C言語なのか Python なのかなど色々な言語で調べます。
file コマンドの使い方
file コマンドは次のようにして使います:
file ファイル名
例えば miku というファイルのファイル形式を特定したい場合は
file miku
出力:
miku: PNG image data, 1920 x 1080, 8-bit/color RGBA, non-interlaced
画像ファイルであることが分かります。もっと正確に言えば、PNG 形式です。
ファイル形式によって、異なる結果を出力します:
*ISO ファイル - DOS/MBR boot sector ISO 9660 CD-Rom filesystem data 'label' (bootable); partition 2 : ID = 0xef, start-CHS (0x3ff,254,63), end-CHS (0x3ff,4,63) startsector 1496, 4736 sectors
*ODS ファイル - OpenDocument Spreadsheet
*PDF ファイル - PDF Document, version 1.4
*CSV ファイル - ASCII text, with very long lines, with CRLF line indicators
出力結果の微調整
デフォルトでは file コマンドはファイル名とともに、詳細を表示しますが、ファイル名が要らない場合は -b を指定します:
file -b miku
出力:
PNG image data, 1920 x 1080, 8-bit/color RGBA, non-interlaced
デリミタ(区切り文字)を変更することもできます:
file -F '|' miku
出力:
miku| PNG image data, 1920 x 1080, 8-bit/color RGBA, non-interlaced
-i あるいは --mime を指定することで今風の MIME タイプの文字列にします:
file -i miku
出力:
miku: image/png; charset=binary
MIME タイプの例:
+----------+-----------------------------+
| ファイル形式 | MIMEタイプ |
+----------+-----------------------------+
| mp3 | audio/mpeg3 |
+----------+-----------------------------+
| CSV | text/comma-separated-values |
+----------+-----------------------------+
| PDF | application/pdf |
+----------+-----------------------------+
| JPEG | image/jpeg |
+----------+-----------------------------+
| .gzip | application/x-gzip |
+----------+-----------------------------+
MIME タイプ一覧 : Media Types
スクリプトも何の言語か特定できます:
file /usr/bin/mintinstall
出力:
/usr/bin/mintinstall: Python script, ASCII text executable
複数のファイルを同時処理
テキストエディターを使って、複数のファイル名を書き込んで、例えば「testfiles」という名前で保存します。testfiles に例えば、次のファイルを書き込みます:
/etc/passwd
/etc/pam.conf
/etc/opt
保存したら、次のコマンドを実行します:
file -f testfiles
出力:
/etc/passwd: ASCII text
/etc/pam.conf: ASCII text
/etc/opt: directory
圧縮ファイル
デフォルトでは、圧縮ファイルに対して file コマンドを使うと:
file.zip: ZIP archive data, at least V2.0 to extractのようになり、書庫の中のファイルのファイル形式まで表示してくれません。
そこで、 -z を指定することで書庫の中のファイルのファイル形式まで表示することができます:
file -z file.zip
出力:
file.zip: Audio file with ID3 version 2.4.0, contains: MPEG ADTS, layer III, v1, 256 kbps, 44.1 kHz, Stereo (Zip archive data, at least v2.0 to extract)
Audio ファイルで MPEG layer III であることから mp3 が含まれていることがわかりました。
参考元 : about tech
| Linux |
2022.09.19 Monday
Show some apps list:
Follow on your feed reader:
About this blog:
Linux Mint-centric chronicle with anime girls since 2009.Best View with Google Chrome 1980x1080 dimension.Info 更新は不定期です。
- Mint 18.3 : オススメ Python IDE 8 選
- Mint 18.3 : Python ではじめるコマンドラインツールの作成とパッケージ化
- Linux ユーザーなら Git を活用しよう
- Shell :シェルスクリプトを組もう! Zenity 編
- Shell :シェルスクリプトを組もう! Dialog 編