파일 명령에 대한 유용한 대안

파일 명령에 대한 유용한 대안

파일이 ASCII(텍스트)인지 또는 기타인지 확인하기 위해 다음 쉘 구문(이전 질문에서 - phemient의 답변)을 사용합니다.

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

문제는 test_file이 ASCII 파일인 경우에도 "파일에 ASCII가 아닌 문자가 포함되어 있습니다"(쉘 스크립트 구문에서)라는 메시지가 표시된다는 것입니다. 이유는 무엇입니까?

또한 file 명령을 사용하여 파일을 테스트했는데 이것이 내가 얻은 것입니다.

file test_file 
Non-ISO extended-ASCII English text" its also ASCII file 

내 질문: "비ISO 확장 ASCII 영어 텍스트"도 지원하기 위해 쉘 구문을 변경하는 방법은 무엇입니까?

그래서 쉘 스크립트에서 "파일에 ASCII 문자만 포함되어 있습니다"라는 인쇄가 표시됩니다.

  remark the solution must be for Linux and solaris

고마워

답변1

안녕하세요. 다음과 같은 것을 사용하겠습니다.

#!/bin/bash
if [[ `file -b $1` == "ASCII text" ]] ; then
   echo "file contains ascii characters only"
   else
     echo "file contains non-ascii characters"
fi

다음과 같습니다:

$ filetest.sh 1.txt  
file contains ascii characters only
$ filetest.sh PHOTOS/HPIM0532.jpg  
file contains non-ascii characters

관련 정보