우리 모두 알고 있듯이 이 구문은 파일을 빈 것으로 인쇄합니다.
[ -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
공백이 아닌 문자가 발견되었는지 여부를 알려주는 종료 상태만 유지하도록 출력을 억제합니다.