在Ubuntu中,包括Bash,循环使得对多个文件应用操作成为可能。循环是最有效的东西,因为它允许用户通过使用一个小的代码行来重复应用相同的逻辑到项目上。
为了理解在目录中的文件上循环操作的概念,你需要访问Ubuntu应用程序和服务。当你有一些权限时,你只能对文件和目录进行操作。
你应该已经在Ubuntu操作系统上安装了Bash。在某些安装中,它是在软件包的更新中默认安装的。如果已经安装了,你需要升级其版本,因为它必须在4以上。要继续目前的指南,你需要保持版本在4以上。要检查系统中预装的Bash的版本,请在Ubuntu终端使用该命令。
$ Bash --version

因此,你必须对文件和目录执行一些功能。你可以在你选择的任何目录上执行下面解释的命令。 但准确地说,最好是创建一个新的目录,这样当你打开它的时候,所有属于这个目录的东西都很容易被访问。
第一步是创建一个目录。我们以 "abc "作为目录名称的样本。通过执行以下命令创建一个目录。
$ mkdir abc

创建目录后,现在你需要对其执行所有的命令。因此,在创建目录之后,切换到该目录。使用下面引用的命令。
$ cd abc

进入该目录后,现在使用touch命令来创建一些文件。
$ touch file1.txt

在Ubuntu中,有许多方法可以用来创建文件。除了touch命令,我们在这里使用echo命令来创建一个文件,并在一个命令中集体添加内容。
$ echo “Linux, ubuntu, Postgresql” > file7.txt

这个文件是在一个简单的目录上创建的,这个目录目前是默认运行的。所以,新创建的目录的名称不会随着命令提示符而被添加。你也可以通过在touch命令中使用范围和扩展来创建文件。
$ touch file-{1..8}.txt
通过使用这个命令,在新的以.txt为扩展名的文件将通过使用一个命令而被创建。
之后,现在你可以循环浏览新创建的目录。显示文件名。由于我们要循环浏览目录中存在的文件,我们需要一个循环。循环的使用是非常有效的,因为它们在较短的时间内获取数据,需要较少的输入。这里我们将使用一个 "for "循环。通过使用这个循环,每个文件的名称将显示在下一行。
$ for file in *; do echo $file; done

"*"用于表示这个目录中存在的所有文件。这使得 "for "循环可以抓取所有的文件。但为了使输出精确,你可以添加一些带星号的术语。例如,'file-*'用于从文件开始的所有文件。而*.txt则用来获取以.txt为扩展名的文件。我们将在文章中进一步使用这些例子。
这个循环的工作方式是,它将从目录中获取所有的文件,然后通过echo命令显示所有的文件。这里的"$"符号代表文件的名称。 从结果来看,你可以看到每个文件名都被显示出来。
通过显示文件名验证了所创建的文件后,现在是时候在文件中输入数值了,因为所创建的文件是空的。这可以通过在文本编辑器中打开每个文件,然后写入数据来手动完成。第二个选择是通过终端的命令在每个文件中输入数据。但通过每个文件的单一命令在每个文件中输入数据需要时间。但是,通过在一条命令中使用for循环,可以很容易地集体完成。
$ for file in *; do echo -2 “$file\nLinux Ubuntu” > $file ; done

在命令执行后,该值已被输入到我们创建的每个文件中。当与echo一起使用时,'-e'标志将保留文件中的新行。要看到输入的数据,你可以导航到'abc'目录。现在打开任何文本文件。该文件不再是空的了。
'$file'将在文件中首先显示文件名,你输入的数据将在第二行预览,因为"\n "用于将此后使用的单词转移到另一行。你也可以通过命令检查输入的数据。
$ for file in *; do cat $file; done

Cat命令用于获取目录中所有文件的数据。
输入数据和获取数据的过程都可以通过一条命令完成。
$ for file in *; do echo –e “$file\nbash programming” > $file; cat $file; done

第一步是在文件中写入数据,然后显示。当你执行该命令时,输出将如下。

每个文件都包含相同的值。这是因为 "for "循环的缘故。
我们知道该循环用于获取数据和插入数值等,但该循环也用于创建备份。这些文件的后缀是".bak"。现在在shell中执行备份命令,看看每个文件的备份情况。
$ for file in *; do cp $file “$file.bak”; done;

"cp "关键字用于备份所有的文件。现在来看看这个命令应用在哪些文件上。我们使用该命令为。
$ ls - l

现在从输出中可以看到,文件的细节被显示出来。日期、文件名、用户名和被删除的时间。此外,你还有一份每个文件的准确副本。
如果我们只想要jpeg文件。我们将在命令中使用这个
$ for file in *.jpeg; do echo $file; done

这将只带来图像的名称。
一个简单的 "find "也可以实现同样的功能。它将获取所有扩展名为.sh的文件。
$ find. – name “*sh”

我们将在for循环中使用关键词 "find"。
$ for file in *; do find. File.*; done

这将把所有的文件带到当前目录中。这些文件的扩展名是.bak、.jpeg、.txt等。
现在,如果你想看到所有目录文件的名称和里面的数据,这也可以通过'for'循环完成。
$ for file in *; do file $file; done

结论
循环浏览任何目录下的文件都不再是件难事,正如我们所知,在Bash中使用循环,在Linux操作系统上执行。本教程是一个完整的指南,指导我们如何使用'for'循环创建、访问和执行对目录的操作。