linux中判断文件是否为空最可靠方法是用[ -s file ]:成立表示存在且非空,! -s表示不存在或为空;需先用-f确认存在再测-s以严格区分,如[ -f f ] && [ ! -s f ]。

在 Linux 中,判断一个文件是否为空(即大小为 0 字节、不包含任何内容),最直接可靠的方法是使用 -s 测试操作符。
用 [ -s FILE ] 判断非空文件
-s 是 test 命令(或 [)内置的文件测试选项,它的含义是:“该文件存在且大小不为 0”。所以:
-
[ -s file.txt ]→ 成立(返回真/退出码 0)表示 文件存在且有内容; -
[ ! -s file.txt ]→ 成立表示 文件不存在,或存在但为空。
注意:它不会区分“文件不存在”和“文件为空”,两者都导致 -s 为假。如需严格区分,应先用 -f 确认文件存在,再测 -s。
安全写法:先确认存在,再判断是否为空
避免因文件不存在而误判为空,推荐组合使用:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
if [ -f "myfile.log" ] && [ ! -s "myfile.log" ]; then echo "myfile.log 存在且为空"; fiif [ -f "myfile.log" ] && [ -s "myfile.log" ]; then echo "myfile.log 存在且有内容"; fi
这样能明确排除“文件根本不存在”的情况,只对真实存在的文件做空/非空判断。
其他辅助验证方式
虽然不如 -s 简洁高效,但以下命令也可用于人工检查或调试:
-
ls -l myfile.txt—— 查看大小字段,显示0字节即为空; -
stat -c "%s" myfile.txt—— 直接输出文件字节数,结果为0表示为空; -
head -c1 myfile.txt | wc -c—— 尝试读第一个字节并统计,结果为0表示无内容(适合大文件,避免cat全读)。
这些命令更适合交互式查看,脚本中仍推荐优先使用 [ -s ]。










