Bash에서 파일이 비어 있는지 확인하는 방법은 무엇입니까?
저는 diff라는 파일을 가지고 있습니다.txt. 빈지 확인하고 싶습니다.
아래와 같은 bash 스크립트를 작성했지만 작동하지 않았습니다.
if [ -s diff.txt ]
then
touch empty.txt
rm full.txt
else
touch full.txt
rm emtpy.txt
fi
사용해 보십시오.
#!/bin/bash -e
if [ -s diff.txt ]; then
# The file is not-empty.
rm -f empty.txt
touch full.txt
else
# The file is empty.
rm -f full.txt
touch empty.txt
fi
참고로, 제가 역할을 바꿨다는 것을(를)empty.txt
그리고.full.txt
@마티아스의 말대로
[ -s file.name ] || echo "file is empty"
[ -s file ] # Checks if file has size greater than 0
[ -s diff.txt ] && echo "file has something" || echo "file is empty"
필요한 경우 현재 디렉터리에 있는 *.txt 파일을 모두 검사하고 빈 파일을 모두 보고합니다.
for file in *.txt; do if [ ! -s $file ]; then echo $file; fi; done
파일이 비어 있는지 또는 공백만 있는지 확인하려면 grep:
if [[ -z $(grep '[^[:space:]]' $filename) ]] ; then
echo "Empty file"
...
fi
다른 답변이 올바르지만 다음을 사용합니다."-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
파일이 비어 있는지 확인하는 가장 쉬운 방법:
if [ -s /path-to-file/filename.txt ]
then
echo "File is not empty"
else
echo "File is empty"
fi
한 줄로 작성할 수도 있습니다.
[ -s /path-to-file/filename.txt ] && echo "File is not empty" || echo "File is empty"
@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
[[ -f filename && ! -s filename ]] && echo "filename exists and is empty"
많은 답이 정확하지만 다음과 같은 경우에는 더 완전하거나 단순할 수 있다고 생각합니다.
예 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
}
@noam-manos의 것과 유사합니다.grep
-기반 답변, 저는 이것을 사용하여 해결했습니다.cat
.나를 위해.-s
내 "빈" 파일의 바이트 수가 0바이트를 초과했기 때문에 작동하지 않았습니다.
if [[ ! -z $(cat diff.txt) ]] ; then
echo "diff.txt is not empty"
else
echo "diff.txt is empty"
fi
빈칸을 삭제하는 방법을 찾으러 왔습니다.__init__.py
파일은 Python 3.3+에서 암시적이며 다음을 사용하게 되었습니다.
find -depth '(' -type f -name __init__.py ')' -print0 |
while IFS= read -d '' -r file; do if [[ ! -s $file ]]; then rm $file; fi; done
또한 $path를 변수로 사용하는 것은 (적어도 zsh 단위로) $PATH 환경을 파괴하므로 열려 있는 셸을 파괴합니다.어쨌든, 나는 공유할 줄 알았어요!
언급URL : https://stackoverflow.com/questions/9964823/how-to-check-if-a-file-is-empty-in-bash
'programing' 카테고리의 다른 글
딕트 목록에서 공통 키의 최소값/최대 값을 찾는 방법은 무엇입니까? (0) | 2023.05.21 |
---|---|
Git에서 원격으로 분기 이름 바꾸기 (0) | 2023.05.16 |
tslint / codelyzer / ng lint 오류: "for (... in...) 문은 if 문으로 필터링해야 합니다." (0) | 2023.05.16 |
기존 MongoDB 항목에서 키/값 삭제 (0) | 2023.05.16 |
.gitignore에서 무시하는 특정 파일을 표시하는 Git 명령 (0) | 2023.05.16 |