在 Bash 中递归地循环遍历目录
本篇文章介绍了如何在 Bash 中递归循环遍历目录。
在 Bash 中递归地循环遍历目录
在处理不同的目录时,通常需要遍历目录。 我们可以在包括 Bash 在内的所有 Linux 终端中使用类似的命令来递归地循环遍历目录。
首先,我们使用find 命令查看当前目录的结构。 find 命令将显示当前或给定目录中的所有文件和文件夹。
查看所有文件:
find . -type f -print0
要查看特定目录的文件:
find /mnt/c/Users/Sheeraz/DemoFolder1 -type f -print0
/mnt/c/Users/Sheeraz/DemoFolder1 是我们要检查的目录路径。
-type f 选项用于仅获取该目录的文件而不是文件夹。 此命令的输出如下。
/mnt/c/Users/Sheeraz/DemoFolder1/Jiyik.java/mnt/c/Users/Sheeraz/DemoFolder1/jiyik.rtf/mnt/c/Users/Sheeraz/DemoFolder1/demo.bmp/mnt/c/Users/Sheeraz /DemoFolder1/DemoFolder2/Jiyik.java/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/jiyik.rtf/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/demo.bmp/mnt/c/Users/Sheeraz/DemoFolder1 /DemoFolder2/Example1.java/mnt/c/Users/Sheeraz/DemoFolder1/Example1.java/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/Jiyik.java/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/jiyik .rtf/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/demo.bmp/mnt/c/Users/Sheeraz/D
如果您还想获取目录的文件夹,请从上述命令中删除 -type f。
find /mnt/c/Users/Sheeraz/DemoFolder1 -print0
一旦我们知道了文件名结构,我们就可以使用以下代码递归循环遍历目录:
for x in $(find /mnt/c/Users/Sheeraz/DemoFolder1 -type f -print0)
do
echo $x;
done;
上面的代码递归地循环遍历目录 /mnt/c/Users/Sheeraz/DemoFolder1 并回显每个文件的名称。 查看此命令的输出:
/mnt/c/Users/Sheeraz/DemoFolder1/Jiyik.java/mnt/c/Users/Sheeraz/DemoFolder1/jiyik.rtf/mnt/c/Users/Sheeraz/DemoFolder1/demo.bmp/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/Jiyik.java/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/jiyik.rtf/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/demo.bmp/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/Example1.java/mnt/c/Users/Sheeraz/DemoFolder1/Example1.java/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/Jiyik.java/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/jiyik.rtf/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/demo.bmp/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/Example1.java
递归循环目录以获取具有特定扩展名的文件
如我们所见,我们不需要显示或处理所有文件。 我们还可以将此命令与 -name 选项一起使用,以获取具有特定扩展名的文件。
查看命令:
for x in $(find /mnt/c/Users/Sheeraz/DemoFolder1 -type f -name '*.java');
do
echo $x;
done;
上面的代码只会打印 /mnt/c/Users/Sheeraz/DemoFolder1 中扩展名为 .java 的文件。 查看输出:
/mnt/c/Users/Sheeraz/DemoFolder1/Jiyik.java
/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/Jiyik.java
/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/Example1.java
/mnt/c/Users/Sheeraz/DemoFolder1/Example1.java
/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/Jiyik.java
/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/Example1.java
递归循环目录以将文件移动到另一个目录
我们还可以通过使用 Bash mv 命令递归循环目录来移动文件; 此命令的语法如下。
mv -v $filename $destination directory
我们可以在递归循环中使用此命令将文件移动到目标目录。 让我们举个例子。
for x in $(find /mnt/c/Users/Sheeraz/DemoFolder1 -type f -name '*.java');
do
mv -v $x /mnt/c/Users/Sheeraz/DemoFolder2
done;
DemoFolder2 是一个空目录。
输出:
renamed '/mnt/c/Users/Sheeraz/DemoFolder1/Jiyik.java' -> '/mnt/c/Users/Sheeraz/DemoFolder2/Jiyik.java'
renamed '/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/Jiyik.java' -> '/mnt/c/Users/Sheeraz/DemoFolder2/Jiyik.java'
renamed '/mnt/c/Users/Sheeraz/DemoFolder1/DemoFolder2/Example1.java' -> '/mnt/c/Users/Sheeraz/DemoFolder2/Example1.java'
renamed '/mnt/c/Users/Sheeraz/DemoFolder1/Example1.java' -> '/mnt/c/Users/Sheeraz/DemoFolder2/Example1.java'
renamed '/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/Jiyik.java' -> '/mnt/c/Users/Sheeraz/DemoFolder2/Jiyik.java'
renamed '/mnt/c/Users/Sheeraz/DemoFolder1/SubFolder/Example1.java' -> '/mnt/c/Users/Sheeraz/DemoFolder2/Example1.java'
正如我们所见,该命令递归循环遍历目录并将扩展名为 java 的文件移动到目标目录。
递归循环遍历目录以删除文件
我们可以使用 rm -rf
命令从给定目录中删除文件。 此命令的语法如下。
rm -rf $filename
让我们把这个命令放在一个递归循环中,以递归地从目录中删除所有文件。
for x in $(find /mnt/c/Users/Sheeraz/DemoFolder1 -type f);
do
rm -rf $x
done;
上述脚本将删除主目录和子目录中的所有文件; 它不会删除该文件夹,因为在命令中只选择了文件。 查看输出:
相关文章
在 Bash 中查找具有扩展名的所有文件
发布时间:2023/05/18 浏览次数:50 分类:操作系统
-
本篇文章介绍如何在 Bash 中查找具有扩展名的所有文件。在 Bash 中查找具有扩展名的所有文件。在 Bash 中查找具有特定扩展名的文件是一项简单的操作。
在 Bash 中更改用户
发布时间:2023/05/18 浏览次数:69 分类:操作系统
-
本篇文章将介绍如何在 Bash 中更改用户。Bash 更改用户 在 Bash 中有多种更改用户的方法。 我们可以使用su命令或者sudo命令直接更改用户或者使用方法切换到root用户。
在 Bash 中运行后台进程
发布时间:2023/05/18 浏览次数:191 分类:操作系统
-
本篇文章将讨论如何在 Bash 中创建在后台运行的命令。 此外,我们将通过使用必要的示例和解释来讨论该主题,以使该主题更容易理解。
Bash 等待后台进程
发布时间:2023/05/18 浏览次数:121 分类:操作系统
-
本篇文章介绍如何在 Bash 中等待后台进程。Bash 等待后台进程。Bash 中的 wait 命令可用于等待所有后台进程完成。
Bash 中检查变量是否包含值
发布时间:2023/05/18 浏览次数:173 分类:操作系统
-
有时,我们需要检查变量是否包含值。 这在处理包含要运行的用户输入的项目时很重要。在 Bash 脚本中,我们可以通过多种方式来检查变量是否包含值。 本文将展示我们如何检查变量的值。
Bash 脚本中的变量插值
发布时间:2023/05/18 浏览次数:79 分类:操作系统
-
本文是关于在 Bash 脚本中使用变量以及如何在 Bash 脚本中插入这些变量。Bash 脚本中的变量。每种编程语言都有具有特定数据类型的变量。
在 Bash 中修改函数内的全局变量
发布时间:2023/05/18 浏览次数:181 分类:操作系统
-
在本文中,我们将学习如何在 Bash 的函数内修改全局变量。在 Bash 中修改函数内的全局变量 如果你在脚本中声明你的变量,Bash 中的每个变量默认都是全局的,这意味着它可以被任何函数、脚本
Shell 编程中变量值加一
发布时间:2023/05/18 浏览次数:135 分类:操作系统
-
本篇文章我们将介绍如何在 bash 中增加一个变量。 我们还将学习在 Linux 中的 bash 脚本中使用的不同类型的增量运算符。