Linux

bash +如何驗證文件是否為空

  • January 18, 2018

眾所周知,這種語法將列印文件為空

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

但是如果文件帶有空格或TAB或空格怎麼辦?, 但沒有任何真實字元,如 az 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" 

所以我們在這裡遇到了麻煩

如何驗證文件為空但可以包含空格/製表符/空白或空無任何內容

目標 - 驗證文件是否為空,但可以包含空格/製表符/空行,或為空而沒有任何空格/空行/空製表符

與**grep**:

grep -q '[^[:space:]]' file.name || echo "file is empty or unreadable"
  • grep '[^[:space:]]' file.name- 僅當找到任何非空白字元時才會生成輸出[^[:space:]]
  • -q抑制輸出以僅保留退出狀態,該狀態告訴我們是否找到了非空格字元。

引用自:https://unix.stackexchange.com/questions/417983