Bash でファイルが空かどうかを確認する
多くの場合、ファイルが空かどうかを確認する必要があります。ありがたいことに、端末で Bash を使用するか、Bash スクリプトを使用して確認する簡単な方法がいくつかあります。
test
コマンドと -s
オプション フラグを使用して、Bash でファイルが空かどうかを確認する
test
コマンドは、最も役立つシェル組み込みコマンドの 1つで、ファイルとディレクトリに関する多くのオプションがあります。 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
オプション フラグと共に使用して、ファイル名の横にファイルのサイズを表示することもできます。
たとえば、2つのサブディレクトリと .docx
ファイルで作成した test
ディレクトリで ls -s
コマンドを実行すると、次の出力が得られます。
macOS では、このコマンドはすべてのサブディレクトリのサイズを 0 として表示することに注意することが重要です。これは、サブディレクトリに他のコンテンツがあるかどうかに関係ありません。
また、使用されているデフォルトのシェルは zsh
(bash
ではありません) であることにも注意してください。 ただし、これはシェルによる違いではなく、オペレーティング システム自体による違いです。
この結果を Linux 環境で、具体的には bash
を使用して説明するために、Test 1
と Test 2
というタイトルの 2つの空のディレクトリを含むテスト フォルダーを作成しました。 また、test.txt
には小さな文字列が含まれ、test2.txt
は空のテキスト ファイルです。
内容のサイズに関係なく、サブディレクトリは 4 キロバイト
として表示されます。 これは、フォルダの実際の内容を表すものではありません。 これは、エントリ自体が占めるスペースです。
より良い方法は、-l
オプション フラグを指定して ls
コマンドを使用することです。これにより、より多くの情報が表形式で表示されます。
ls -l
このコマンドは、前と同じ Test
ディレクトリで実行します。 出力は次のとおりです。
上記のように、ls -l
コマンドはより多くの情報を提供し、サブディレクトリの正しいサイズを示します。
サイズを KB、MB、および GB で表示するには、オプション -lh
を使用します。 h
フラグを含めると、データがより読みやすくなります。
出力は次のようになります。