在 Bash 中循环目录中的文件

Nilesh Katuwal 2023年1月30日
  1. 循环文件
  2. 循环目录
  3. 使用循环写入目录中的所有文件
  4. 备份目录内的所有文件
在 Bash 中循环目录中的文件

Bash 中的循环使得对许多文件进行操作变得可行。你必须拥有一些权限才能使用文件和文件夹。

最有效的方法是循环,它允许用户通过使用简单的代码行再次将相同的逻辑应用于对象。

循环文件

首先,我们将创建一个 test 目录并在该目录中创建多个文件。让我们在 test 目录中创建五个文件,分别为 file1.txtfile2.txtfile3.txtfile4.txtfile5.txt

循环遍历 bash 目录中的文件

我们使用 mkdir 创建了一个 test 文件夹,并使用 touch 命令在其中创建了五个文件。

bash 循环示例

循环目录

让我们遍历新创建的 test 目录并显示目录中的文件名。我们将使用 for 循环来执行此操作。

Bash
 bashCopy~/test$ for file in *; do echo $file; done

导航到 test 目录并在 $ 后面输入上述命令。 * 表示目录中的所有文件。

输出:

 textCopyfile1.txt
file2.txt
file3.txt
file4.txt
file5.txt

使用循环写入目录中的所有文件

Hello World!在每个文件中,我们将使用 for 循环来迭代文件,并使用 echo 中的 -e 标志来保留换行符。

Bash
 bashCopy~/test$ for file in *; do echo -e "$file\nHello World!"> $file ; done

$file 会在文件开头显示文件名,\n 会换行,Hello World! 会在第二行预览。要检查我们添加到文件中的数据,我们需要使用 catfor 循环来显示它。

Bash
 bashCopy~/test$ for file in *; do cat $file ; done

输出:

 textCopyfile1.txt
Hello World!
file2.txt
Hello World!
file3.txt
Hello World!
file4.txt
Hello World!
file5.txt
Hello World!

备份目录内的所有文件

.bak 扩展名表示备份文件。我们将使用 cpfor 循环来创建备份。

Bash
 bashCopy~/test$ for file in *; do cp $file "$file.bak" ; done

你可以使用 ls -l 列出 test 目录中的所有文件。

Bash
 bashCopy~/test$ ls -l

让我们看看 test 目录。

bash 备份

你可以看到在文件夹内创建了带有后缀 .bak 扩展名的备份文件。

相关文章 - Bash Loop