2010-02-09 13 views
72

¿Hay alguna manera de averiguar MIME-TYPE (o se llama "Content-Type" ...) de un archivo en un script linux bash?¿Cómo puedo encontrar un archivo "mime-type (Content-Type?)"?

La razón que necesito es porque ImageShack parece que tenga que cargar un archivo que por alguna razón se detecta el archivo PNG como un "application/octet-stream" ...

Me'v comprueba el archivo , y realmente es un .png

$ cat /1.png 
?PNG 
(with a heap load of random characters) 

Esto me da el error:

$ curl -F "[email protected]/1.png" http://www.imageshack.us/upload_api.php 
<links> 
<error id="wrong_file_type">Wrong file type detected for file 1.png:application/octet-stream</error> 
</links> 

Esto funciona, pero tengo que especificar un tipo MIME.

$ curl -F "[email protected]/1.png;type=image/png" http://www.imageshack.us/upload_api.php 

Respuesta

143

Usar file. Ejemplos:

> file --mime-type image.png 
image.png: image/png 

> file -b --mime-type image.png 
image/png 

> file -i FILE_NAME 
image.png: image/png; charset=binary 
+0

Saludos, "archivo --mime-type /1.png" funciona muy bien! – Mint

+0

No si usa el Git bash debajo de las ventanas. – tivo

+1

Para obtener ** solo ** el tipo de mimo que podría hacer: 'archivo --mime-tipo FILE_NAME | awk '{print $ 2}' ' –

16

una de la otra herramienta (además de archivos) que puede utilizar es xdg-mime

por ejemplo xdg-mime query filetype query filetype <file>

si tiene yum,

yum install xdg-utils.noarch

Un ejemplo de comparación de xdg-mime y archivo en un archivo Subrip (subtítulos)

$ xdg-mime query filetype subtitles.srt 
application/x-subrip 

$ file --mime-type subtitles.srt 
subtitles.srt: text/plain 

en el archivo anterior solo se muestran como texto sin formato.

+0

xdg-mime query filetype install.sql; xprop: no se puede abrir la pantalla '' –

+0

xdg-mime es una secuencia de comandos bash y depende en gran medida de variables de entorno. Algunos de ellos, p. DE no están configurados si no está conectado a una sesión. Compruébelo usted mismo '$ less $ (which xdg-mime)' – ManuelSchneid3r

1

Pruebe el comando file con la opción -i.

-i opción Hace que el comando de archivo emita cadenas de tipo mime en lugar de las más tradicionales de lectura humana. Por lo tanto, puede decir text/plain; charset=us-ascii en lugar de ASCII text.

1

archivo --mime funciona, pero no - tipo mime. al menos para mi RHEL 5.

+0

Esto también funciona bajo Linux Mint 12 –

7

versión del archivo < 5: archivo -i -b/ruta/a/archivo
archivo de la versión> = 5: archivo de tipo --mime -b/ruta/a/archivo

Cuestiones relacionadas