Como determinar o tipo de arquivo no Linux?
Pergunta
Se alguém me envia um documento (.pdf, .doc, .xls, .ppt, ogg, mp3, png, etc) sem a extensão, como posso determinar o tipo de arquivo? O comando / usr / bin / arquivo nem sempre acertar ou ele simplesmente diz que eu tenho um documento do Microsoft Office. Eu gostaria de saber exatamente para que eu possa adicionar a extensão ao nome do arquivo.
Solução
Você pode vir acima com suas próprias regras, adicionando-os ao arquivo / etc / magic
arquivo de homem para mais detalhes. É complicado para obter sempre estes correta sucesso razoável no entanto, eu tive.
Outras dicas
Tente mimetype (1).
Para Perl, olhada File :: MimeInfo .
Alguns dos outros cartazes, até agora, parecem negligenciar algumas coisas.
File :: MimeInfo usa o mesmo banco de dados MimeInfo usado por 'arquivo' para identificar arquivos. Então, isso é improvável que fazer algo diferente.
File :: Tipo é provável que seja, embora interessante, pois depende apenas de si mesmo, mas isso leva a uma comicamente longo roteiro cheio de 'se' declarações. Mas esta é, por sua própria natureza, improvável para cobrir coisas 'arquivo' já não cobre.
O melhor que você pode fazer com tipos de arquivos desconhecidos é tentar rachar-los abrir com um editor hexadecimal, ou executá-los através de 'cordas' e ver se você reconhece nada. Se você gerenciar como identificar um arquivo, você pode querer ir para a File :: Digite como seu solução, porque tanto quanto eu posso fazer para fora, seu, pelo menos, fácil de estender.
Você pode usar o Perl módulo: File :: Tipo