bash + 파일이 비어 있는지 확인하는 방법

bash + 파일이 비어 있는지 확인하는 방법

우리 모두 알고 있듯이 이 구문은 파일을 빈 것으로 인쇄합니다.

[ -s file.name ] || echo "file is empty"

하지만 파일에 공백, TAB 또는 공백이 있으면 어떻게 될까요? , 그러나 az 1-9 등과 같은 실제 문자는 없습니다.

그래서 나는 이것을 사용한다

[[ $(tr -d "\r\n" < file.name |wc -c) -eq 0 ]] && echo "File has no content"

하지만 우리가 그것을 설정할 때

echo "       " >file.name

그러면 다음 구문은 인쇄되지 않습니다. 파일에 내용이 없습니다.

 [[ $(tr -d "\r\n" < file.name |wc -c) -eq 0 ]] && echo "File has no content" 

그래서 우리는 곤경에 빠졌어요

파일이 비어 있지만 공백/탭/공백을 포함할 수 있는지 또는 아무것도 포함할 수 있는지 확인하는 방법

목표 - 파일이 비어 있지만 공백/탭/빈 줄을 포함할 수 있는지 또는 공백/빈 줄/빈 탭 없이 비어 있는지 확인합니다.

답변1

그리고grep:

grep -q '[^[:space:]]' file.name || echo "file is empty or unreadable"
  • grep '[^[:space:]]' file.name- 공백이 아닌 문자가 발견된 경우에만 출력이 생성됩니다 [^[:space:]].
  • -q공백이 아닌 문자가 발견되었는지 여부를 알려주는 종료 상태만 유지하도록 출력을 억제합니다.

관련 정보