file 명령은 텍스트 파일과 LaTeX 파일을 어떻게 구별합니까?

file 명령은 텍스트 파일과 LaTeX 파일을 어떻게 구별합니까?

.ipynb텍스트 파일인 많은 파일(Jupyter Notebooks)이 있습니다 . 이들 모두에는 일부 LaTeX 마크업이 포함되어 있습니다. 하지만 실행하면 다음과 같은 file결과를 얻습니다.

$ file nb_*          
nb_1.ipynb:      ASCII text
nb_2.ipynb:      ASCII text
nb_3.ipynb:      ASCII text, with very long lines
nb_4.ipynb:      LaTeX document, ASCII text, with very long lines
nb_5.ipynb:      text, with very long lines

file이것을 어떻게 구별하나요? 모든 파일이 동일한 유형이기를 원합니다.


(파일이 왜 같은 형식이어야 하나요? 공유하기 위해 온라인 시스템에 업로드합니다. 시스템은 어떻게든 파일을 분류하고 다르게 취급하므로 이를 변경하는 것은 불가능합니다. 플랫폼이 사용하거나 file가능하다고 생각합니다.libmagic내부적으로 이 문제를 해결하기 위해 노력하고 있습니다. )

답변1

파일 유형 인식은 소위마법 모델. 이것분석용 매직 파일 텍스 시리즈 소스 코드에는 파일을 다음과 같이 분류하는 많은 매크로 이름이 포함되어 있습니다.유제. 각 게임에는 하나씩 할당됩니다. 예를 들어 15는 \begin, 18은 을 의미합니다 \chapter. 이는 이러한 이름으로 자체 매크로를 정의하는 Plain TeX 또는 ConTeXt 문서의 잘못된 분류와 같은 거짓 긍정에 대해 휴리스틱을 더욱 강력하게 만듭니다.

답변2

file파일을 LaTeX로 분류하는 것으로 보이는 문자열을 찾았습니다 .

$ cat text
a
b
$ cat latex
a
\begin
b
$ file text latex
text:  ASCII text
latex: LaTeX document, ASCII text

따라서 적어도 현재 텍스트로 분류된 파일에 일부 환경을 추가하여 모든 파일을 동일한 유형으로 만들 수 있습니다.

관련 정보