在 Bash 中检查文件是否为空的 5 种方法

2023-10-23

在 Linux 中,空文件是大小为零字节的文件。这意味着该文件不包含任何数据,并且在文本编辑器中打开时没有任何内容。可以使用 touch 命令创建一个空文件:`touch myfile.txt`

这将在当前目录中创建一个名为 myfile.txt 的空文件。您还可以使用 echo 命令和 > 运算符创建一个空文件:`echo > myfile.txt`

这将用空字符串覆盖文件中的任何现有内容,从而有效地创建一个空文件。

Bash 中检查文件是否为空的方法

在 Bash 中检查文件是否为空有多种不同的方法,具体取决于您的具体需求和系统上可用的工具。在本文中,我们将介绍在 Bash 中检查文件是否为空的五种不同方法。

  1. 使用`test`命令或`[`
  2. The `test`命令(这是`[` 命令)是一个简单且广泛使用的实用程序,用于在 Bash 中对文件和其他对象执行各种测试。使用以下命令检查文件是否为空`[`,您可以使用`-s`选项,检查文件的大小:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/env bash
     
    FILENAME=myfile.txt
     
    # 检查文件是否为空
    if [ ! -s “${文件名}” ]; then
        echo “文件为空”
    else
        echo “文件不为空”
    fi

    请注意,`-s`如果文件大小为零,则选项认为文件为空,但它不检查是否存在隐藏字符或空格。如果您想检查一个完全空的文件(即仅包含空格或根本没有行的文件),您可以使用`-z`选项,检查字符串是否为空:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/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不存在,脚本将显示输出为“文件不存在”,如果文件存在并且是空文件,则它将显示输出为“文件存在但为空”,否则如果文件存在其中包含一些内容,则会显示输出将输出显示为“文件存在且不为空”。

  3. 使用 wc 命令
  4. The `wc`(字数统计)命令是另一个实用程序,可用于检查 Bash 中的文件是否为空。要检查文件中的行数,可以使用`-l` option:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/env bash
     
    FILENAME=myfile.txt
     
    # 检查文件是否有行
    if [ $(wc -l < “${文件名}”) -eq 0 ]; then
        echo “文件 $FILENAME 为空”
    else
        echo “文件 $FILENAME 不为空”
    fi

    这会将文件的内容传递给`wc`命令作为标准输入,并且`-l`选项将计算行数。如果行数为零,则该文件被视为空。

  5. 使用 grep 命令
  6. The `grep`命令是用于搜索和处理文本文件的强大工具。要使用 grep 检查文件是否为空,您可以使用`-q`选项,这会导致 grep 安静地运行并返回退出代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #!/usr/bin/env bash
     
    FILENAME=myfile.txt
     
    if grep -q . “${文件名}”; then
        echo “文件不为空”
    else
        echo “文件为空”
    fi

    这将在文件中搜索任何字符(. 是匹配任何字符的正则表达式),如果找到匹配则返回零退出代码,如果文件为空则返回非零退出代码。

    使用查找命令

    The `find`命令是用于搜索和处理文件和目录的实用程序。要使用 find 检查文件是否为空,可以使用 -empty 选项,该选项匹配空文件:

    1
    2
    3
    4
    5
    6
    7
    8
    #!/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 选项显示文件的大小(以字节为单位):

    1
    2
    3
    4
    5
    6
    7
    8
    #!/usr/bin/env bash
     
    FILENAME=myfile.txt
    if [ $(stat -c %s “${文件名}”) -eq 0 ]; then
        echo “文件为空”
    else
        echo “文件不为空”
    fi

    这会将文件的大小传递给`[`命令,它将与零进行比较。如果大小为零,则该文件被视为空。如果大小非零,则文件被视为非空。

我希望这些示例能让您更好地理解 Bash 中检查文件是否为空的不同方法。正如您所看到的,有许多不同的方法可供选择,最好的方法取决于您的特定需求和系统上可用的工具。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Bash 中检查文件是否为空的 5 种方法 的相关文章

随机推荐

  • 如何在 Ubuntu 18.04 上安装 Mono

    Mono 是一个用于开发和运行基于 ECMA ISO 标准的跨平台应用程序的平台 它是 Microsoft NET 框架的免费开源实现 本教程介绍如何在 Ubuntu 18 04 上安装 Mono 先决条件 这些说明假定您以 root 身份
  • Linux中的su命令(切换用户)

    The su 替代或切换用户的缩写 实用程序允许您使用其他用户 默认为 root 用户 的权限运行命令 Using su是在当前登录会话中切换到管理帐户的最简单方法 当不允许 root 用户通过以下方式登录系统时 这尤其方便ssh或使用 G
  • Linux 中的Whereis命令

    whereis是一个命令行实用程序 允许您查找给定命令的二进制文件 源文件和手册页文件的位置 在这篇文章中 我们将向您展示如何使用Linuxwhereis命令 如何使用whereis命令 语法为whereis命令如下 whereis OPT
  • 在 CentOS 8 上使用 Let's Encrypt 保护 Nginx

    Let s Encrypt 是由互联网安全研究小组 ISRG 开发的免费 自动化 开放的证书颁发机构 提供免费的 SSL 证书 Let s Encrypt 颁发的证书受到所有主要浏览器的信任 并且自颁发之日起 90 天内有效 在本教程中 我
  • Expect 命令以及如何像魔术一样自动化 shell 脚本

    在上一篇文章中 我们讨论了写作实用的shell脚本 我们看到了编写 shell 脚本是多么容易 今天我们要讨论一个对 shell 脚本有神奇作用的工具 该工具是期待命令 or 期待脚本语言 Expect 命令或 Expect 脚本语言是一种
  • SSH 连接被拒绝(原因和解决方案)

    本教程将介绍您在使用 SSH 时可能遇到的最常见错误 连接被拒绝 请继续阅读 详细了解这个问题及其各种解决方案 Secure Shell SSH 是系统管理员最常用的工具之一 它对于管理所有服务器和执行日常任务至关重要 目录 hide 1
  • Linux env 命令:深入了解 Linux 环境管理

    The envLinux中的命令用于显示或设置环境变量 它可用于在修改后的环境中运行程序或显示当前环境 在本教程中 我们将深入研究其各种论点 并揭示其与脚本的集成 目录 hide 1 参数概览 2 执行不带参数的 env 命令 3 使用 e
  • 揭示 Linux 虚拟文件系统的强大功能

    Linux 虚拟文件系统或虚拟文件系统通常是位于实际文件系统之上的一层 它允许用户访问不同类型的文件系统 可以将虚拟文件系统视为内核与实际文件系统之间的接口 这意味着您将在 etc fstab 文件中找不到这些 Linux 虚拟文件系统的任
  • NumPy 随机种子(生成可预测的随机数)

    在计算科学中 随机种子是生成的伪随机数序列的起点 这些数字看似随机 但它们遵循确定性序列 种子决定了该序列的初始状态 在 Python 中NumPy 库 您可以使用设置随机种子numpy random seed 功能 这将使随机数生成的输出
  • Python map() 函数(转换可迭代对象)

    The map Python 中的 function 是一个内置函数 用于将函数应用于可迭代对象 数组 列表 元组 字典 集合 中的每个项目并返回一个迭代器 这使得它对于转换可迭代数据非常有用 目录 hide 1 Python map 函数
  • 使用 matplotlib 在 Python 中进行 3D 绘图

    数据可视化就是这样一个领域 大量的库都是用 Python 开发的 在这些当中 Matplotlib是数据可视化最流行的选择 虽然最初是为了绘制二维图表而开发的 例如直方图 条形图 散点图 线图等 Matplotlib 还扩展了其功能以提供
  • Bash 脚本编写第 6 部分 – 创建和使用 Bash 函数

    在讨论 bash 函数之前 我们先讨论一下这种情况 编写 bash 脚本时 您会发现自己在多个地方使用相同的代码 如果您厌倦了在 bash 脚本中一次又一次地编写相同的代码行 那么最好编写一次代码块并在 bash 脚本中的任何位置调用它 b
  • Python PDF处理教程

    PDF 或便携式文档格式首先由 Adob e 推出 但现在由国际标准化组织 ISO 维护 并且它是一个开放标准 PDF 文件的一些主要组件是纯文本 按钮 表单 单选按钮 图像 音频 视频 签名和元数据 在 Python 中 我们可以执行不同
  • 使用 LRU 缓存提升您的 Python 代码

    LRU 缓存或 最近最少使用 缓存是一种缓存 当缓存达到其大小限制时 最近最少使用的条目将被丢弃 关键思想是通过重用以前的结果来加快对相同数据的后续请求 这种技术称为记忆化 在本教程中 我们将深入研究 LRU 缓存的概念 探索其底层机制 以
  • Python 数学函数(简单示例)

    在本教程中 您将了解 Python 数学函数mathPython 的模块 任何类型的项目都始终需要数学计算 在 Python 中 一些内置数学运算符不需要数学模块 例如加法 减法 乘法 除法 三角函数 正弦 余弦等 对数 指数或阶乘等高级运
  • Bash For 循环范围:简单指南

    在 Bash shell 中 for loop使您能够有效地迭代数字或字符序列 当涉及到定义序列时 范围就发挥了作用 本教程重点介绍 Bash 范围创建强大循环的能力 目录 hide 1 使用大括号 进行范围定义 2 基本数字序列 star
  • 网页设计趋势将持续存在

    第一个网站是纯文本网站 今天很难想象会有这样一个网站 第一个同时提供图片和文字的网站于 1993 年上线 blog hubspot com Lindsay Kolowich 2015 年 3 月 这些年来 网页设计取得了很大的发展和进步 为
  • 如何从 CentOS 7.7-7.0 升级 CentOS 7.8

    最新版本 CentOS 7 8 可供升级 所有 CentOS 7 7 7 6 7 5 7 4 7 3 7 2 7 1 和 7 0 用户都可以将系统升级到最新版本 所有使用 WHM cPanel 运行的用户都不需要执行任何操作 WHM cPa
  • 如何在 CentOS/RHEL 8/7/6 上安装 Angular CLI

    Angular是一个框架 库 资产和实用程序 它跟踪所有组件并定期检查其更新 本教程将帮助您在 CentOS 8 7 6 和 RHEL 8 7 6 Linux 操作系统上安装 Angular CLI 工具 第 1 步 安装 Node js
  • 在 Bash 中检查文件是否为空的 5 种方法

    在 Linux 中 空文件是大小为零字节的文件 这意味着该文件不包含任何数据 并且在文本编辑器中打开时没有任何内容 可以使用 touch 命令创建一个空文件 touch myfile txt 这将在当前目录中创建一个名为 myfile tx