Eu tenho vários arquivos de origem LaTeX, todos têm a mesma estrutura, todos têm finais de linha no estilo Unix e todos são UTF-8, todos têm aproximadamente o mesmo tamanho (1-2 KB), todos usam espaços para formatação de recuo. Eles são incluídos em um documento maior, cada arquivo lidando com uma seção separada no documento com cada seção tendo o mesmo layout (então cada arquivo é estruturado de forma idêntica com basicamente os mesmos comandos LaTeX, apenas com conteúdo de texto diferente), então todos os arquivos iniciam diretamente /end com e contém muitos comandos LaTeX. O estranho agora é o seguinte:
$ file *.tex
file1.tex: LaTeX document, Unicode text, UTF-8 text
file2.tex: CSV text
Este é apenas um pequeno trecho, a detecção de CSV vs. LaTeX é totalmente aleatória, enquanto CSV é detectado com um pouco menos de frequência (talvez 40% CSV, 60% LaTeX), mas para cada arquivo o tipo é reproduzível.
Tentei variar alguma formatação e conteúdo em arquivos detectados por CSV, mas eles permanecem detectados como CSV.
O que está acontecendo aqui?
A maior parte da detecção de tipos de arquivos
file
é baseada em valores “mágicos”, descritos em um grande conjunto de arquivos ; Os arquivos TeX possuem seu próprio conjunto de receitas de detecção .Os arquivos CSV, entretanto, são tratados de maneira diferente, com uma rotina dedicada
file
própria . Conta os campos separados por vírgula nas primeiras dez linhas de um arquivo. Se houver pelo menos dois campos em cada linha, e houver pelo menos duas linhas no arquivo, e o número de campos for o mesmo nas primeiras dez linhas (ou no arquivo inteiro se tiver menos de dez linhas), então o arquivo é identificado como um arquivo CSV.A detecção de CSV pode ser desativada usando a
-e
opção: