Por que a diferença entre os resultados com “file --mime-type” e “xdg-mime query filetype”?

4

Estou tentando encontrar o tipo mime de um arquivo. Eu usei 'file --mime-type' ou 'xdg-mime', mas recebo respostas diferentes? Não tenho certeza de entender?

$ file --mime-type -b gePlugin.kmz 
  application/zip
$ xdg-mime query filetype gePlugin.kmz 
  application/vnd.google-earth.kmz

Por que tenho respostas diferentes? Qual deles devo confiar?

Por que existe uma diferença?

Obrigado!

UPDATE (por cipricus):

Exemplo para o arquivo iso:

file --mime-type -b MY_ISO.iso fornece application/x-iso9660-image , que é não útil com um arquivo da área de trabalho para ações no menu de contexto.

xdg-mime query filetype MY_ISO.isomodel/x.stl-binary , que funciona com a mesma área de trabalho para ações no menu de contexto.

    
por Matifou 02.11.2016 / 22:39

4 respostas

3

@jdpipe parece estar correto em relação ao comportamento de xdg-mime e file . Existe outro utilitário mimetype que se comporta de forma semelhante a xdg-mime .

Em relação a qual utilitário "confiar", geralmente é bom usar apenas mimetype ou xdg-mime . No entanto, se você estiver preocupado com a possibilidade de um arquivo estar errado extensão, use file porque examina o conteúdo do arquivo antes de relatar seu tipo. Por exemplo, se um png for renomeado como jpg , file informará corretamente "image / png", mas xdg-mime e mimetype ambos incorretamente reportarão "image / jpeg".

Como anotado por @ db429 , parece que ambos os utilitários estão corretos para o arquivo kmz que você cita. O Google Earth cria arquivos kmz , que também são renomeados como zip files. O que você deseja fazer com as informações determina qual aplicativo usar. Se você quiser extrair o conteúdo, então file diz para você ir em frente e usar unzip . Se você quiser visualizar e usar as informações como pretendido originalmente, use o Google Earth ou outro programa capaz de usar kmz arquivos.

Em relação ao arquivo iso , não sei por que xdg-mime está informando model/x.stl-binary . No meu computador, ele informa application/x-cd-image . Além disso, usar file sem o sinalizador --mime-type relata informações adicionais que confirmam que é algum tipo de imagem de disco. Talvez seja útil atualizar o banco de dados mime:

sudo update-mime-database /usr/share/mime
    
por xiota 30.06.2018 / 05:05
4

O utilitário xdg-mime de xdg-utils é um programa mais abrangente que leva em conta seu ambiente de área de trabalho (GNOME e parentes, ou KDE). Em alguns casos, ele faz uma chamada para o utilitário file , mas em outros casos procura o banco de dados do tipo MIME para seu sistema específico.

O utilitário file , até onde eu sei, só parece dentro do seu arquivo, ele não vê o nome do arquivo. Portanto, o arquivo .kmz é reconhecido como um arquivo zip. file faz uso de 'números mágicos' que são associados a tipos de arquivos específicos, por exemplo, a sequência mágica P5 no início de um arquivo é associada a imagens PGM da biblioteca Netpbm.

O banco de dados do tipo MIME sabe sobre tipos de arquivos de nível superior, conforme identificado usando extensões de nome de arquivo, e pode ser personalizado pelo usuário. Quando novos programas são instalados, o banco de dados do tipo MIME é estendido e fornece respostas que podem não ter sido fornecidas antes da instalação de determinado software. Pelo que sei, esse comportamento não acontece com o comando file .

Se você quiser ler mais, os xdg-mime detalhes são aqui - código fonte. Você pode ver que ele chama file em alguns casos.

    
por jdpipe 29.06.2018 / 01:14
2

Tanto quanto eu posso dizer em 18.04 (mais aqui ):

xdg-mime query filetype YOURFILE

é o que é confiável.

Se você precisar do tipo MIME para ter uma ação no menu de contexto com algum gerenciador de arquivos como o Nautilus ou o Dolphin, procure no gerenciador de arquivos sob as "Propriedades" do arquivo.

No Dolphin:

    
por cipricus 25.06.2018 / 09:43
0

Uma pequena pesquisa na web com google earth file format deu a resposta xdg-mime tem a resposta mais precisa, mas o 'z' provavelmente significa um formato de arquivo 'zipado', então primeiro é verdade também.

    
por db429 02.11.2016 / 23:12