- 使用
`test`
命令或`[`
The `test`
命令(这是`[
` 命令)是一个简单且广泛使用的实用程序,用于在 Bash 中对文件和其他对象执行各种测试。使用以下命令检查文件是否为空`[`
,您可以使用`-s`
选项,检查文件的大小:
|
#!/usr/bin/env bash
FILENAME=myfile.txt
# 检查文件是否为空
if [ ! -s “${文件名}” ]; then
echo “文件为空”
else
echo “文件不为空”
fi
|
请注意,`-s`
如果文件大小为零,则选项认为文件为空,但它不检查是否存在隐藏字符或空格。如果您想检查一个完全空的文件(即仅包含空格或根本没有行的文件),您可以使用`-z`
选项,检查字符串是否为空:
|
#!/usr/bin/env bash
FILENAME=myfile.txt
[ -z “$(猫${FILENAME})” ] then
echo “文件为空”
else
echo “文件不为空”
fi
|
这将读取文件的内容并将它们作为字符串传递给测试命令。如果字符串为空,则文件被视为空。
您还可以在测试空文件之前检查文件是否存在。下面的脚本将检查文件是否存在以及文件是否为空。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#!/usr/bin/env bash
FILENAME=myfile.txt
if [ -f “${文件名}” ];then
if [ -s “${文件名}” ];then
echo “文件 ${FILENAME} 存在且不为空”
else
echo “文件 ${FILENAME} 存在但为空”
fi
else
echo “文件 ${FILENAME} 不存在”
fi
|
按照上面的例子,如果我的文件.txt不存在,脚本将显示输出为“文件不存在”,如果文件存在并且是空文件,则它将显示输出为“文件存在但为空”,否则如果文件存在其中包含一些内容,则会显示输出将输出显示为“文件存在且不为空”。
- 使用 wc 命令
The `wc`(字数统计)命令是另一个实用程序,可用于检查 Bash 中的文件是否为空。要检查文件中的行数,可以使用`-l`
option:
|
#!/usr/bin/env bash
FILENAME=myfile.txt
# 检查文件是否有行
if [ $(wc -l < “${文件名}”) -eq 0 ]; then
echo “文件 $FILENAME 为空”
else
echo “文件 $FILENAME 不为空”
fi
|
这会将文件的内容传递给`wc`命令作为标准输入,并且`-l`
选项将计算行数。如果行数为零,则该文件被视为空。
- 使用 grep 命令
The `grep`命令是用于搜索和处理文本文件的强大工具。要使用 grep 检查文件是否为空,您可以使用`-q`
选项,这会导致 grep 安静地运行并返回退出代码:
|
#!/usr/bin/env bash
FILENAME=myfile.txt
if grep -q . “${文件名}”; then
echo “文件不为空”
else
echo “文件为空”
fi
|
这将在文件中搜索任何字符(. 是匹配任何字符的正则表达式),如果找到匹配则返回零退出代码,如果文件为空则返回非零退出代码。
使用查找命令
The `find`命令是用于搜索和处理文件和目录的实用程序。要使用 find 检查文件是否为空,可以使用 -empty 选项,该选项匹配空文件:
|
#!/usr/bin/env bash
FILENAME=myfile.txt
if find . -type f -empty -name “${文件名}”; then
echo “文件为空”
else
echo “文件不为空”
fi
|
这将搜索当前目录(.)对于文件(-f 型)那些是空的(-empty)并有名字“我的文件.txt”(-名称“myfile.txt”)。如果找到匹配项,find 命令将返回零退出代码,表明该文件为空。如果没有找到匹配项,find 命令将返回一个非零退出代码,表明该文件不为空。
使用stat命令
The `stat`命令是一个用于显示有关文件和文件系统信息的实用程序。要使用 stat 检查文件是否为空,可以使用 -c 选项显示文件的大小(以字节为单位):
|
#!/usr/bin/env bash
FILENAME=myfile.txt
if [ $(stat -c %s “${文件名}”) -eq 0 ]; then
echo “文件为空”
else
echo “文件不为空”
fi
|
这会将文件的大小传递给`[`命令,它将与零进行比较。如果大小为零,则该文件被视为空。如果大小非零,则文件被视为非空。
我希望这些示例能让您更好地理解 Bash 中检查文件是否为空的不同方法。正如您所看到的,有许多不同的方法可供选择,最好的方法取决于您的特定需求和系统上可用的工具。