迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 操作系统 >

在 Bash 中递归地循环遍历目录

作者:迹忆客 最近更新:2023/05/18 浏览次数:

本篇文章介绍了如何在 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 是一个空目录。

Destination Directory before Moving

输出:

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;

上述脚本将删除主目录和子目录中的所有文件; 它不会删除该文件夹,因为在命令中只选择了文件。 查看输出:

Remove File from Directory

上一篇:在 Bash 中查找具有扩展名的所有文件

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 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 中的每个变量默认都是全局的,这意味着它可以被任何函数、脚本

Bash 变量作用域

发布时间:2023/05/18 浏览次数:91 分类:操作系统

本文介绍了 Linux 中的 bash 变量作用域。 它还对变量类型、声明变量和访问它们进行了讲解。

Shell 编程中变量值加一

发布时间:2023/05/18 浏览次数:135 分类:操作系统

本篇文章我们将介绍如何在 bash 中增加一个变量。 我们还将学习在 Linux 中的 bash 脚本中使用的不同类型的增量运算符。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便