web-dev-qa-db-ja.com

bash +ファイルが空かどうかを確認する方法

すべての人がこの構文を使用することを知っているので、ファイルは空です

[ -s file.name ] || echo "file is empty"

しかし、ファイルにスペース、タブ、または空白スペースがある場合はどうなりますか? 、ただしa-z 1-9などの実際の文字は含まれません

これを使う

[[ $(tr -d "\r\n" < file.name |wc -c) -eq 0 ]] && echo "File has no content"

それを設定すると

echo "       " >file.name

次の構文は印刷されません-ファイルにコンテンツがありません

 [[ $(tr -d "\r\n" < file.name |wc -c) -eq 0 ]] && echo "File has no content" 

ここで困っています

ファイルが空であることを確認する方法ですが、スペース/タブ/空白または何もない空を含めることができます

目標-ファイルが空であるがスペース/タブ/空白行を含めることができる、またはスペースなしで空/空白行/空のタブを確認する

3
jango

grepの場合:

grep -q '[^[:space:]]' file.name || echo "file is empty or unreadable"
  • grep '[^[:space:]]' file.name-空白以外の文字[^[:space:]]が見つかった場合にのみ出力を生成します。
  • -qは、出力を抑制して、非スペーシング文字が見つかったかどうかを知らせる終了ステータスのみを保持します。
6
RomanPerekhrest