如何检查文件是否为空或只有空白字符?

如何检查文件是否为空或只有空白字符?

如果文件为空,这将通知我们:

[[ ! -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

如果您想检查空文件内容如果条件 [[ ... ]],然后用(不带 -q)包围 grep -z $( grep ... )

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

我必须使用它,以避免运行时出现以下错误:

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

-bash:需要条件二元运算符

-bash:“-q”附近的语法错误

相关内容