我有许多.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和想解决这个问题。)
文件类型识别由所谓的魔术 模式驱动。用于分析 TeX系列源代码的魔法文件 包含许多宏名称,这些名称会导致文件被归类为LaTeX。每场比赛都分配了一个 强度,例如 15 in case of
\begin
和 18 for\chapter
。这使得启发式算法更能抵抗误报,例如对 Plain TeX 或 ConTeXt 文档的错误分类,这些文档恰好用这些名称定义了自己的宏。我发现了一个似乎
file
将文件分类为 LaTeX 的字符串:所以至少我可以通过向当前分类为文本的文件添加一些环境来强制所有文件具有相同的类型。