쉘 스크립트의 파일 명령으로 ASCII 파일을 확인하십시오.

쉘 스크립트의 파일 명령으로 ASCII 파일을 확인하십시오.

file 명령을 사용하면 많은 파일이 ASCII인지 또는 다른 형식인지 확인해야 합니다.

때때로 나는 file 명령에서 얻습니다.

  file1: ASCII English text

때로는 file 명령과 다른 응답을 얻습니다.

  file2: Non-ISO extended-ASCII English text, with very long lines

다른 구문을 가진 다른 답변이 있는지 잘 모르겠습니다.

내 질문은 다음과 같습니다

파일이 ASCII인지 확인하기 위해 다음 ksh 구문을 작성했지만

다음 구문은 ASCII 형식을 확인하기 위한 최적의 구문입니까?

   [[ ` file  $some_file | grep –c ASCII ` = 1 ]] && print "you have ascii file for sure"

누군가 ASCII 형식을 확실히 확인하라는 다른 제안이 있다면 매우 기쁠 것입니다.

답변1

if LC_ALL=C grep -q '[^[:print:][:space:]]' file; then
    echo "file contains non-ascii characters"
else
    echo "file contains ascii characters only"
fi

답변2

어때요...

if file -ib "$file" | grep -Eqs '^text/plain(;|$)'; then
    echo "It's text/plain."
fi

얼마나 흔한 일인지 모르겠습니다 --mime-type. 표준이라면 사용하십시오.

if file -b --mime-type "$file" | grep -qs '^text/plain$'; then

또는 grep -qs '^text/'모든 텍스트 유형에 대해.

답변3

코드로 출력을 구문 분석하고 있으므로 출력되도록 -i옵션을 사용하는 것이 좋습니다.file몸짓 광대극대신 인간 친화적인 문자열을 입력하세요. MIME 유형 출력은 더 규칙적이므로 코드에서 처리하기가 좀 더 쉽습니다.

출력 유형에 대해서는 다음을 살펴보십시오.남자 파일말한다:

/usr/share/file/magic
    Default list of magic numbers

/usr/share/file/magic.mime
    Default list of magic numbers, used to output  mime types
    when the -i option is specified.

의 출력을 구문 분석할 때 관심을 가질 유형을 결정하려면 보고할 수 있는 모든 MIME 유형에 대한 해당 파일을 살펴보십시오 file. 나는 당신이 관심을 가질 것이라고 생각하는 것은 MIME 유형이 text/.

관련 정보