📌  相关文章
📜  bash 循环遍历带有扩展名的文件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:29:35.354000             🧑  作者: Mango

Bash 循环遍历带有扩展名的文件

在 Shell 脚本编程中,经常需要遍历指定目录下所有符合特定扩展名的文件。例如,需要输出所有扩展名为 .txt 的文本文件。这时,我们可以使用 Bash 循环来实现这个目的。

查找指定扩展名的文件

我们可以使用 Shell 命令 find 来查找指定目录下所有符合特定扩展名的文件,例如:

find /path/to/directory -name "*.txt"

上面的命令将查找 /path/to/directory 目录下所有扩展名为 .txt 的文件。

循环遍历文件

一旦我们查找到了符合特定扩展名的文件列表,我们就可以使用 Bash 循环来遍历这些文件。

遍历文件列表

假设我们已经查找到了所有扩展名为 .txt 的文本文件。我们可以使用 Bash 循环来遍历这些文件:

for file in $(find /path/to/directory -name "*.txt"); do
    echo "Processing $file"
done

上面的代码使用 $(...) 来执行 find 命令,并将结果传递给 for 循环进行遍历。在循环体内,我们可以使用 $file 变量来访问当前遍历到的文件名。这样,我们就可以对每个文件执行需要的操作了。

遍历当前目录下所有符合特定扩展名的文件

如果我们只需要遍历当前目录下所有符合特定扩展名的文件,我们可以使用 * 通配符,例如:

for file in *.txt; do
    echo "Processing $file"
done

上面的代码将遍历当前目录下所有扩展名为 .txt 的文件。

完整示例

下面给出一个完整的示例,实现了遍历指定目录下所有扩展名为 .txt 的文本文件,并使用 grep 命令查找其中包含特定字符串的行:

#!/bin/bash

DIR=/path/to/directory
STRING="hello"

for file in $(find $DIR -name "*.txt"); do
    echo "Processing $file"

    # 在当前文件中查找包含特定字符串的行
    grep "$STRING" $file
done

上面的代码将遍历 $DIR 目录下所有扩展名为 .txt 的文件,并依次查找其中包含字符串 $STRING 的行。