如何检查Bash中的文件是否为空?

我有一个名为diff.txt的文件。 要检查它是否是空的。 做了这样的事情,但不能得到它的工作。

if [ -s diff.txt ] then touch empty.txt rm full.txt else touch full.txt rm emtpy.txt fi 

拼写错误令人不愉快,不是吗? 检查empty的拼写,但也请试试这个:

 #!/bin/bash -e if [ -s diff.txt ] then rm -f empty.txt touch full.txt else rm -f full.txt touch empty.txt fi 

我非常喜欢shell脚本,但是它的一个缺点是,当你拼错时shell不能帮你,而像C ++编译器这样的编译器可以帮助你。

顺便说一句,我已经交换了empty.txtfull.txt的angular色,正如@Matthias所暗示的那样。

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

[[-s file]] – >检查文件的大小是否大于0

 if [[ -s diff.txt ]]; then echo "file has something"; else echo "file is empty"; fi 

如果需要,这将检查当前目录中的所有* .txt文件; 并报告所有的空文件:

 for file in $(ls *.txt); do if [[ ! -s $file ]]; then echo $file; fi; done 

其他答案是正确的,即使文件不存在,使用"-s"选项也会显示文件为空。
通过添加这个额外的检查"-f"来查看文件是否存在,我们确保结果是正确的。

 if [ -f diff.txt ] then if [ -s diff.txt ] then rm -f empty.txt touch full.txt else rm -f full.txt touch empty.txt fi else echo "File diff.txt does not exist" fi