如何检查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.txt
和full.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