Bash에서 파일이 비어 있는지 확인

Faaiq Bilal 2023년6월20일
  1. test 명령을 -s 옵션 플래그와 함께 사용하여 Bash에서 파일이 비어 있는지 확인
  2. ls 명령을 사용하여 Bash에서 파일이 비어 있는지 확인
Bash에서 파일이 비어 있는지 확인

파일이 비어 있는지 확인해야 하는 경우가 종종 있으며 고맙게도 터미널에서 Bash를 사용하거나 Bash 스크립트를 사용하여 확인할 수 있는 몇 가지 간단한 방법이 있습니다.

test 명령을 -s 옵션 플래그와 함께 사용하여 Bash에서 파일이 비어 있는지 확인

test 명령은 가장 유용한 쉘 내장 명령 중 하나이며 파일 및 디렉토리에 대한 많은 옵션이 있습니다. test 명령의 -s 옵션은 파일 크기가 0보다 큰지 여부를 확인합니다.

파일 크기가 0을 초과하면 명령이 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

test -s의 사용은 아래에 설명되어 있습니다. 예를 들어 test 명령을 설명합니다.

이 예에는 newFile.txt라는 파일이 있습니다. 다음과 같이 empty_test.sh라는 Bash 스크립트를 생성합니다.

#!/bin/bash
test -s newFile.txt && echo "file has something" || echo "file is empty"

newFile.txt 파일이 비어 있으면 셸에 다음과 같은 출력이 표시됩니다.

빈 출력

반면에 newFile.txt에 다음과 같은 내용이 있는 경우:

Hello!

그러면 출력은 다음과 같습니다.

비어 있지 않은 출력

위의 명령은 선택한 파일이 비어 있는지 여부를 확인하는 간단한 방법입니다. test -s newFile.txt가 true로 평가되면 file has something을 인쇄합니다.

그렇지 않으면 파일이 비어 있습니다라고 인쇄됩니다. 이 명령은 Bash 스크립트에서 사용하거나 터미널에서 직접 실행할 수 있습니다.

이 명령이 검사 중인 파일과 다른 디렉터리 또는 수준에서 사용되는 경우 전체 파일 경로를 작성해야 한다는 점에 유의해야 합니다.

위의 명령을 작성하는 다른 방법이 있습니다. Bash에서 [는 쉘 내장이며 test 명령과 동일합니다.

#!/bin/bash
[ -s newFile.txt ] && echo "file has something" || echo "file is empty"

이 명령은 이전에 사용한 명령과 동일합니다.

test -s 명령을 사용하여 지정된 디렉토리에서 모든 빈 파일을 찾을 수도 있습니다.

#!/bin/bash
for file in *.txt;
do if [ ! -s $file ];
then echo $file;
fi;
done

위의 명령은 디렉토리에 있는 모든 빈 .txt 파일의 이름을 인쇄합니다. .txt를 다른 확장자로 바꾸면 다양한 유형의 파일을 확인하도록 쉽게 사용자 정의할 수 있습니다.

ls 명령을 사용하여 Bash에서 파일이 비어 있는지 확인

ls 명령은 현재 디렉토리의 모든 파일과 하위 디렉토리를 나열합니다. ls 명령은 -s 옵션 플래그와 함께 사용되어 파일 이름 옆에 파일 크기를 표시할 수도 있습니다.

예를 들어, 두 개의 하위 디렉토리와 .docx 파일로 생성한 test 디렉토리에서 ls -s 명령을 실행하면 다음과 같은 출력이 표시됩니다.

MacOS ls 출력

macOS에서 이 명령은 모든 하위 디렉터리의 크기를 0으로 표시한다는 점에 유의해야 합니다. 이는 하위 디렉터리에 다른 콘텐츠가 있는지 여부와 관계가 없습니다.

또한 사용 중인 기본 셸은 zsh(bash가 아님)입니다. 그러나 이것은 셸에 의한 차이가 아니라 운영 체제 자체에 따른 차이입니다.

특히 bash를 사용하는 Linux 환경에서 이 결과를 설명하기 위해 Test 1Test 2라는 제목의 두 개의 빈 디렉토리가 있는 테스트 폴더를 만들었습니다. 또한 test.txt에는 작은 문자열이 있고 test2.txt는 빈 텍스트 파일인 두 개의 텍스트 파일이 포함되어 있습니다.

Linux ls 출력

내용의 크기에 관계없이 하위 디렉토리는 4 킬로바이트로 표시됩니다. 이것은 폴더의 실제 내용을 나타내지 않습니다. 이것은 항목 자체가 차지하는 공간입니다.

더 나은 방법은 ls 명령을 -l 옵션 플래그와 함께 사용하는 것입니다. 이렇게 하면 테이블 형식으로 더 많은 정보가 표시됩니다.

ls -l

이전과 동일한 Test 디렉토리에서 이 명령을 실행합니다. 출력은 다음과 같습니다.

Linux ls l 출력

위에서 볼 수 있듯이 ls -l 명령은 자세한 정보를 제공하고 올바른 하위 디렉토리 크기를 보여줍니다.

KB, MB 및 GB 단위로 크기를 보려면 -lh 옵션을 사용하십시오. h 플래그를 포함하면 데이터를 사람이 더 쉽게 읽을 수 있습니다.

출력은 다음과 같습니다.

Linux ls lh 출력

관련 문장 - Bash File