text / plainとtext / x-java用に2つの異なるjsファイルを取得するのはなぜですか?

text / plainとtext / x-java用に2つの異なるjsファイルを取得するのはなぜですか?

私は/usr/bin/file -i file_path私のファイルに関する情報を取得するために使用します。

複数のjsファイルを含む単純なWebサイトプロジェクトがあります。

そのうちのいくつかを使用すると、/usr/bin/file -i file_name.js次の結果が表示されます。

file_name.js: テキスト/一般テキスト文字セット=utf-8

しかし、他のファイルの場合は、次のような結果が得られます。

ファイル名.js: text/x-java;文字セット=utf-8

私が使用している品質管理ユーティリティはファイルの種類によって異なるため、これらの不整合が原因でエラーが発生します。

なぜですか?何を確認または除外する必要がありますか?どのように?

答え1

私のシステムでは、file名前が終わるファイルを推測します.js(実際には、そのうちのいくつがJavaScriptファイルであるかどうかはわかりません)。

$ locate -e0 '*.js' | xargs -r0 file -b --mime-type | sort | uniq -c
     60 application/json
     18 application/octet-stream
      1 application/x-terminfo
      1 inode/directory
     62 inode/symlink
    259 inode/x-empty
      1 regular file, no read permission
      2 text/csv
    220 text/html
  13342 text/plain
     30 text/x-Algol68
      6 text/x-asm
    126 text/x-c
     32 text/x-c++
     41 text/x-java
     15 text/x-perl
     82 text/x-tex

file経験的な方法を使用してファイルの内容を読み、ファイルの種類を推測してください。 JavaScript、C、C++、Javaソースファイルなどを明確に区別できないテキストファイルの場合、推測が乱舞することが多いです。

She-bangがあるfileと報告された唯一のファイルであるAFAICTは、Nodejsインタプリタを参照します。で始まり、終わると報告された行です。application/javascript#!text/x-javaimport;

複数の言語で動作するコードを書くのは芸術であることを忘れないでください。多言語コーディング。全体がありますcodegolf.stackexchange.comのQ&Aカテゴリこれは、通常、ファイルの内容からプログラミング言語を確実に識別することが必ずしも可能ではないことを示しています。あなたができることは、次のように言うだけです。おそらくjavascriptやC ++などのようです。

関連情報