나는 /usr/bin/file -i file_path
내 파일에 대한 정보를 얻는 데 사용합니다.
여러 js 파일이 포함된 간단한 웹 사이트 프로젝트가 있습니다.
그 중 일부를 사용하면 /usr/bin/file -i file_name.js
다음과 같은 결과가 나타납니다.
file_name.js: 텍스트/일반 텍스트 문자 집합=utf-8
하지만 다른 파일의 경우 다음과 같은 결과를 얻습니다.
파일 이름.js: text/x-java; 문자 집합=utf-8
내가 사용하는 품질 관리 유틸리티는 파일 형식에 따라 다르기 때문에 이러한 불일치로 인해 오류가 발생합니다.
왜 그럴까요? 무엇을 확인하거나 제외해야 합니까? 어떻게?
답변1
내 시스템에서는 file
이름이 다음으로 끝나는 파일을 추측합니다 .js
(실제로 그 중 몇 개가 자바스크립트 파일인지는 모르겠습니다).
$ 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-java
import
;
여러 언어로 작동하는 코드를 작성하는 것은 예술이라는 것을 기억하세요.다국어 코딩. 전체가 있습니다codegolf.stackexchange.com의 Q&A 카테고리이는 일반적으로 파일 내용에서 프로그래밍 언어를 확실하게 식별하는 것이 항상 가능하지는 않음을 보여줍니다. 당신이 할 수 있는 일은 다음과 같이 말하는 것뿐입니다. 아마도 javascript나 C++ 등일 것 같습니다.