7

SO、Google、Bing、および linuxquestions.org で複数回検索しても何も見つからないため、これが可能であるかどうか疑問に思い始めています。

/usr/share/magic(ユーティリティで使用される)にあるマジック パターンを拡張してfile(1)、ファイルの末尾または末尾付近のデータに基づいてファイルを認識することに関心があります。ファイルの先頭だけでなく、先頭からファイルへの任意のオフセットに対してもこれを行うことができました。

man ページには、いくつかの標準的な使用例がかなりうまく説明されています。残念ながら、最初ではなく最後からインデックスを作成する方法はないようです。私が思いついた唯一の回避策は、tacand/orを使用してスクリプト化されたアプローチを採用することでしたlreverseが、これらはバイナリ データには不向きかもしれません。

また、他のスクリプト化された処理は避けたいと思いました。これは、適切なファイル マジックで実行できるはずだと思います。何か案は?

4

1 に答える 1

5

不可能です。file(1)パイプでも動作するように設計されています。lseek(2)ファイルの最後に到達するためにパイプで使用することはできません。ファイル全体を最後まで読み取ると非常に遅くなり (そしてfile(1)速くしようと努力します)、実際にパイプから読み取っている場合は、ファイルの終わりに到達しない可能性があり、さらに悪いことになります。

ドキュメンテーションに関しては、オープンソースソフトウェアの場合、ソースコード自体が最終的なドキュメンテーションです。このようなケースに行き詰まった場合は、常に確認することをお勧めします。関数file_or_fd()insrc/magic.cは手がかりを与えます。ソースを使え、ルーク!;-)

あなたの特定のケースでは、問題のファイル形式をもう一度調べます。実際に で解析できない場合file(1)は、短い Perl または Python スクリプトでうまくいくはずです。幸運を!

于 2011-03-22T05:52:15.230 に答える