ファイルが空であるか空白文字のみを確認するには?

ファイルが空であるか空白文字のみを確認するには?

ファイルが空の場合は通知します。

[[ ! -s $file ]] && echo "hello there I am empty file !!!"

しかし、ファイルにスペース(スペースまたはタブ)があるかどうかを確認するには?

  • 空のファイルにはスペース/ TABを含めることができます。

答え1

grepスペース以外の文字でのみ機能します。

grep -q '[^[:space:]]' < "$file" &&
  printf '%s\n' "$file contains something else than whitespace characters"

答え2

他の答えと似ていますが、否定を使用します。grep -q

if ! grep -q '[^[:space:]]' "$file"; then
    echo "file is empty"
else
    echo "File has data"
fi

答え3

空のファイルの内容を確認したい場合if条件 [[ ... ]]その後、grepを(-qなし)で囲みます-z $( grep ... )

if [[ -z $(grep '[^[:space:]]' $file) ]] ; then
  echo "Empty file" 
  ...
fi

実行時に次のエラーを回避するには、これを使用する必要があります。

$ [[ grep -q '[^[:space:]]' $file ]]

-bash: 条件付き二項演算子が必要です。

-bash: "-q" 付近の構文エラー

関連情報