在 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 循环来执行此操作。

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

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

输出:

file1.txt
file2.txt
file3.txt
file4.txt
file5.txt

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

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

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

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

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

输出:

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

备份目录内的所有文件

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

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

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

~/test$ ls -l

让我们看看 test 目录。

bash 备份

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

相关文章 - Bash Loop