을 호출하는 스크립트를 작성하고 file
case-statement를 사용하여 관심있는 케이스를 확인할 수 있습니다.
예를 들어
#!/bin/sh
case $(file "$1") in
(*script*|*\ text|*\ text\ *)
echo text
;;
(*)
echo binary
;;
esac
물론 관심있는 특별한 경우가 많이있을 수 있습니다. strings
의 사본을 확인 하면 libmagic
약 200 건이 표시됩니다 (예 :
Konqueror cookie text
Korn shell script text executable
LaTeX 2e document text
LaTeX document text
Linux Software Map entry text
Linux Software Map entry text (new format)
Linux kernel symbol map text
Lisp/Scheme program text
Lua script text executable
LyX document text
M3U playlist text
M4 macro processor script text
일부는 문자열 "text"를 다른 유형의 일부로 사용합니다. 예 :
SoftQuad troff Context intermediate
SoftQuad troff Context intermediate for AT&T 495 laser printer
SoftQuad troff Context intermediate for HP LaserJet
마찬가지로 script
단어의 일부가 될 수 있지만이 경우 아무런 문제가 없습니다. 그러나 스크립트는 하위 문자열이 아닌 단어"text"
로 확인해야합니다 .
다시 말해, file
출력은 항상 "스크립트"또는 "텍스트"를 갖는 정확한 설명을 사용하지 않습니다. 특별한 경우를 고려해야합니다. 후속 조치는 파일 --mime-type
에 대해서는이 방법은 효과가 없지만 작동 한다고 언급했습니다 .svg
. 그러나 테스트에서 svg-files에 대한 다음 결과를 볼 수 있습니다.
$ ls -l *.svg
-r--r--r-- 1 tom users 6679 Jul 26 2012 pumpkin_48x48.svg
-r--r--r-- 1 tom users 17372 Jul 30 2012 sink_48x48.svg
-r--r--r-- 1 tom users 5929 Jul 25 2012 vile_48x48.svg
-r--r--r-- 1 tom users 3553 Jul 28 2012 vile-mini.svg
$ file *.svg
pumpkin_48x48.svg: SVG Scalable Vector Graphics image
sink_48x48.svg: SVG Scalable Vector Graphics image
vile-mini.svg: SVG Scalable Vector Graphics image
vile_48x48.svg: SVG Scalable Vector Graphics image
$ file --mime-type *.svg
pumpkin_48x48.svg: image/svg+xml
sink_48x48.svg: image/svg+xml
vile-mini.svg: image/svg+xml
vile_48x48.svg: image/svg+xml
수천 개의 파일을 본 후 선택한 MIME 형식 출력에서 "텍스트"와 함께 6 만 표시합니다. 틀림없이, 마임 타입 출력의 끝 부분에있는 "XML을"일치하는 것은 일치 "SVG"보다 말하지만, 스크립트를 사용하여, 더 유용 할 수 할 제안이 여기에서에 그 돌아갑니다.
출력은 file
어느 시나리오에서나 약간의 조정 이 필요하며 100 % 신뢰할 수 없습니다 ( "펄"스크립트 중 일부는 "데이터"라고 혼동합니다).
의 구현이 둘 이상 있습니다 file
. 가장 일반적으로 사용되는 프로그램은에서 작동하며 libmagic
다른 프로그램에서 사용할 수 있습니다 (아마도 직접 zsh
하지는 않지만 python
가능).
쉘, Perl, Ruby 및 Python의 파일 테스트 비교 테이블에 따르면 Perl에는 -T
이 정보를 제공하는 데 사용할 수 있는 옵션이 있습니다. 그러나 이에 대한 기능은 없습니다 zsh
.
더 읽을 거리 :
file
표준 유틸리티이며 파일 형식을 결정하기 위해 파일 마법을 실행할 수 있습니다. 대부분의 텍스트 형식을 말할 수 있으며 이진 형식에서 꽤 괜찮은 일을합니다. 당신이하려는 모든 것이 파일이 텍스트인지 아닌지를 알아내는 것이라면, 이것이 당신이 관심있는 명령입니다.