📅  最后修改于: 2023-12-03 15:29:35.354000             🧑  作者: Mango
在 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
的行。