파일의 MIME 유형 (Content-Type)을 어떻게 찾을 수 있습니까?


107

Linux bash 스크립트에서 파일의 MIME 유형 (또는 "Content-Type"이라고 함)을 찾는 방법이 있습니까?

내가 필요한 이유는 어떤 이유로 .png 파일을 파일로 감지하기 때문에 ImageShack이 파일을 업로드하는 데 필요한 것으로 보이기 때문 application/octet-stream입니다.

파일을 확인했는데 실제로는 PNG 이미지입니다.

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

이것은 나에게 오류를 제공합니다.

$ curl -F "fileupload=@/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>

작동하지만 MIME-TYPE을 지정해야합니다.

$ curl -F "fileupload=@/1.png;type=image/png" http://www.imageshack.us/upload_api.php

답변:


228

사용 file. 예 :

> 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

Windows에서 Git bash를 사용하는 경우에는 그렇지 않습니다.
tivo

1
얻으려면 단지 : 당신이 할 수있는 마임 타입file --mime-type FILE_NAME | awk '{print $2}'
저스틴 젠킨스

23
@JustinJenkins -b를 생략 파일 이름 때문에 file -b --mime-type FILE_NAME반환 단지 MIME 타입
jaygooby

또는kmimetypefinder filename
bitek jul

인식하지 못 application/xml하거나text/xml

24

사용할 수있는 다른 도구 (파일 외에) 중 하나는 xdg-mime

예 : xdg-mime query filetype <file>

얌이 있다면

yum install xdg-utils.noarch

Subrip (자막) 파일에서 xdg-mime과 파일의 비교 예

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

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

위 파일에서는 일반 텍스트로만 표시합니다.


xdg-mime 쿼리 파일 유형 install.sql; xprop : 디스플레이를 열 수 없음 ''
코더

xdg-mime는 환경 변수에 크게 의존하는 bash 스크립트입니다. 그들 중 일부는 예를 들어 세션에 로그인하지 않은 경우 DE가 설정되지 않습니다. 직접 확인해보세요$ less $(which xdg-mime)
ManuelSchneid3r 2014-09-08

10

파일 버전 <5 : file -i -b / path / to / file
파일 버전> = 5 : file --mime-type -b / path / to / file


1
파일 버전이란 무엇을 의미합니까?
user2867106

1
@ user2867106 나는 그가 파일 명령의 버전을 의미한다고 생각합니다.
jgh fun-run

4

옵션으로 file명령을 시도하십시오 -i.

-ioption file 명령이 기존의 사람이 읽을 수있는 문자열이 아닌 MIME 유형 문자열을 출력하도록합니다. 따라서 text/plain; charset=us-ascii오히려 ASCII text.


2

--mime 파일은 작동하지만 --mime-type은 작동하지 않습니다. 적어도 내 RHEL 5의 경우.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.