迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

在 Bash 中检查文件是否为空

作者:迹忆客 最近更新:2023/05/30 浏览次数:

通常需要检查文件是否为空,幸运的是,有一些简单的方法可以在终端上使用 Bash 或什至使用 Bash 脚本来检查。


在 Bash 中使用带有 -s 选项标志的测试命令来检查文件是否为空

test 命令是最有用的 shell 内置命令之一,有许多文件和目录选项。 test 命令的 -s 选项检查文件的大小是否大于 0。

如果文件大小超过零,该命令将返回 true。 否则,它将返回 false。

下面演示了 test -s 的使用。 我们将使用示例来解释测试命令。

在此示例中,我们有一个名为 newFile.txt 的文件。 我们将创建一个名为 empty_test.sh 的 Bash 脚本,如下所示:

#!/bin/bash
test -s newFile.txt && echo "file has something" || echo "file is empty"

如果文件 newFile.txt 为空,则 shell 将具有以下输出:

空输出

另一方面,如果 newFile.txt 有任何内容,例如:

Hello!

然后输出将如下所示:

非空输出

上面的命令是检查所选文件是否为空的直接方法。 如果 test -s newFile.txt 的计算结果为真,它将打印 file has something。

否则,它会打印 file is empty。 此命令可以在 Bash 脚本中使用,也可以直接在终端中运行。

需要注意的是,如果该命令是在与正在检查的文件不同的目录或级别中使用的,则需要写入完整的文件路径。

有一种替代方法可以编写上述命令。 在 Bash 中,[ 也是一个内置的 shell,相当于测试命令:

#!/bin/bash
[ -s newFile.txt ] && echo "file has something" || echo "file is empty"

该命令等同于我们之前使用的命令。

我们还可以使用 test -s 命令查找给定目录中的所有空文件:

#!/bin/bash
for file in *.txt;
do if [ ! -s $file ];
then echo $file;
fi;
done

上述命令将打印目录中所有空 .txt 文件的名称。 只需将 .txt 替换为另一个扩展名,即可轻松定制它以检查不同类型的文件。


在 Bash 中使用 ls 命令检查文件是否为空

ls 命令列出当前目录中的所有文件和子目录。 ls 命令也可以与 -s 选项标志一起使用,以在文件名称旁边显示文件的大小。

例如,如果我们在创建的包含两个子目录和一个 .docx 文件的测试目录中运行 ls -s 命令,我们将得到以下输出:

MacOS ls 输出

需要注意的是,在 macOS 中,此命令会将所有子目录的大小显示为 0。这与子目录是否包含其他内容无关。

还应注意,使用的默认 shell 是 zsh(不是 bash)。 但是,这不是由 shell 而是由操作系统本身造成的差异。

为了在 Linux 环境中说明这个结果,特别是使用 bash,我们创建了一个测试文件夹,其中包含两个名为 Test 1 和 Test 2 的空目录。它还包含两个文本文件,其中 test.txt 有一个小字符串,test2.txt 是 一个空白的文本文件。

Linux ls 输出

无论内容大小如何,子目录都显示为 4 KB。 这并不代表文件夹的实际内容; 这是条目本身占用的空间。

更好的方法是使用带有 -l 选项标志的 ls 命令,因为这将以表格的形式显示更多信息:

ls -l

我们将在与之前相同的测试目录中运行此命令。 输出如下:

Linux ls l 输出

如上所示,ls -l 命令提供了更多信息并显示了子目录的正确大小。

要以 KB、MB 和 GB 为单位查看大小,请使用选项 -lh。 包含 h 标志使数据更易于阅读。

输出将类似于以下内容:

Linux ls lh 输出

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

MySQL 检查列是否为空

发布时间:2023/05/08 浏览次数:69 分类:MySQL

本文介绍如何在 MySQL 中检查列是否为 null 或为空。检查 MySQL 中的列是否为 Null 或 Empty 过滤掉表中存在的 null 或空列值的步骤在前面的部分中给出。

在 C++ 中检查字符串是否为空

发布时间:2023/04/08 浏览次数:156 分类:C++

本文介绍了如何在 C++ 中检查字符串是否为空的方法。使用内置方法 empty() 来检查 C++ 中的字符串是否为空

如何在 PHP 中检查一个数组是否为空

发布时间:2023/03/22 浏览次数:180 分类:PHP

本文介绍了在 PHP 中如何检查一个数组是否为空,包括 empty()函数、sizeof()函数、counter()函数和 NOT 运算符。它包括 empty()函数、sizeof()函数、count()函数和 NOT 运算符。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便