파일이 비어 있는지 또는 공백 문자만 있는지 확인하는 방법은 무엇입니까?

파일이 비어 있는지 또는 공백 문자만 있는지 확인하는 방법은 무엇입니까?

파일이 비어 있으면 알려줍니다.

[[ ! -s $file ]] && echo "hello there I am empty file !!!"

하지만 파일에 공백(공백 또는 탭)이 있는지 확인하는 방법은 무엇입니까?

  • 빈 파일에는 공백/TAB이 포함될 수 있습니다.

답변1

grep공백 이외의 문자에만 작동합니다 .

grep -q '[^[:space:]]' < "$file" &&
  printf '%s\n' "$file contains something else than whitespace characters"

답변2

다른 답변과 유사하지만 부정을 사용합니다.grep -q

if ! grep -q '[^[:space:]]' "$file"; then
    echo "file is empty"
else
    echo "File has data"
fi

답변3

빈 파일 내용을 확인하고 싶다면if 조건 [[ ... ]], 그런 다음 grep을 (-q 없이)로 묶습니다 -z $( grep ... ).

if [[ -z $(grep '[^[:space:]]' $file) ]] ; then
  echo "Empty file" 
  ...
fi

실행할 때 다음 오류를 방지하려면 이것을 사용해야 합니다.

$ [[ grep -q '[^[:space:]]' $file ]]

-bash: 조건부 이항 연산자가 필요합니다.

-bash: "-q" 근처의 구문 오류

관련 정보