diff.txt라는 파일이 있습니다. 비어 있는지 확인하고 싶습니다. 이와 같은 것을했지만 작동시키지 못했습니다.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
답변
맞춤법 오류가 자극적입니까? 의 철자를 확인하고 empty
다음을 시도하십시오.
#!/bin/bash -e
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
나는 쉘 스크립팅을 많이 좋아하지만, 한 가지 단점은 철자가 틀렸을 때 쉘이 당신을 도울 수 없지만 C ++ 컴파일러와 같은 컴파일러가 당신을 도울 수 있다는 것입니다.
@Matthias가 제안한 것처럼 우연히 empty.txt
and 의 역할을 바꿨습니다 full.txt
.
답변
[ -s file.name ] || echo "file is empty"
답변
[[-s file]]-> 파일 크기가 0보다 큰지 확인
if [[ -s diff.txt ]]; then echo "file has something"; else echo "file is empty"; fi
필요한 경우 현재 디렉토리의 모든 * .txt 파일을 검사합니다. 빈 파일을 모두보고합니다.
for file in *.txt; do if [[ ! -s $file ]]; then echo $file; fi; done
답변
다른 답변은 정확하지만 "-s"
옵션을 사용 하면 파일이 존재하지 않아도 파일이 비어 있음을 나타냅니다.
이 추가 검사 "-f"
를 추가 하여 파일이 먼저 존재하는지 확인하여 결과가 올바른지 확인합니다.
if [ -f diff.txt ]
then
if [ -s diff.txt ]
then
rm -f empty.txt
touch full.txt
else
rm -f full.txt
touch empty.txt
fi
else
echo "File diff.txt does not exist"
fi
답변
@geedoubleya 답변은 내가 가장 좋아하는 것입니다.
그러나 나는 이것을 선호한다
if [[ -f diff.txt && -s diff.txt ]]
then
rm -f empty.txt
touch full.txt
elif [[ -f diff.txt && ! -s diff.txt ]]
then
rm -f full.txt
touch empty.txt
else
echo "File diff.txt does not exist"
fi
답변
파일이 비어 있거나 공백 만 있는지 확인하려면 grep을 사용할 수 있습니다.
if [[ -z $(grep '[^[:space:]]' $filename) ]] ; then
echo "Empty file"
...
fi
답변
많은 답변이 정확하지만 예를 들어 더 완벽하고 단순 할 수 있다고 생각합니다.
예 1 : 기본 if 문
# BASH4+ example on Linux :
typeset read_file="/tmp/some-file.txt"
if [ ! -s "${read_file}" ] || [ ! -f "${read_file}" ] ;then
echo "Error: file (${read_file}) not found.. "
exit 7
fi
$ read_file이 비어 있거나 없으면 종료와 함께 쇼를 중지하십시오. 한 번 이상 나는 여기서 정답을 오해하여 그 반대를 의미했습니다.
예 2 : 함수로서
# -- Check if file is missing /or empty --
# Globals: None
# Arguments: file name
# Returns: Bool
# --
is_file_empty_or_missing() {
[[ ! -f "${1}" || ! -s "${1}" ]] && return 0 || return 1
}
