Linux 中仅递归列出目录吗?
“递归”一词指的是 Linux 或 Unix 操作系统命令处理文件夹的内容,如果文件夹有子文件夹和文档,该指令仍然对所有这些文档起作用(递归)。子目录可能有自己的一组文件和文件夹(例如,大文件夹),等等。您将使用不同的 Linux 指令递归遍历每个文件夹,然后到达指定文件夹的边缘。在该级别,Linux 指令返回到树的关闭位置,并对存在的任何子文件夹重复该过程。在本教程中,您将学习递归列出目录的所有方法。
简单列表目录示例
首先,您必须知道如何使用简单的 list 命令列出 Linux 系统中的所有目录。打开命令行终端并尝试以下“ls”命令以仅列出目录。它不仅会列出目录,还会列出其中的子文件夹和文件的总数。输出显示文件夹及其所有者、组、读写权限和文件夹创建日期的信息。
要列出 Linux 系统中的所有目录和文件,您必须在 list 命令中使用“-la”而不是简单的“-l”。因此,请执行更新的命令来执行此操作。输出显示所有文件和文件夹及其附加信息。
要简单地列出目录而无需附加信息,请尝试以下命令,后跟标志“-d”。
您还可以使用相同的命令,只需稍加修改即可列出文件夹及其附加信息。您只需在此命令中添加“-l”标志,如下所示:
要仅检查特定主目录中的文件总数,请在 shell 中尝试以下命令。您将获得 Linux 操作系统中的文件总数。
递归列出目录的示例
Linux 系统中有不同类型的递归命令,可用于递归地列出目录。为了分别理解它们,假设您的 Linux 目录中有 5 个名为“Documents”的文件。
使用“-lR”标志递归列出
第一种方法是在查询中使用“-lR”标志来递归列出 Linux 系统的所有目录。执行下面的列表命令后,它将列出所有文件夹及其子文件夹及其奖励详细信息,如输出所示。
让我们递归地列出 Linux 系统的某个特定文件夹或目录中的所有文件或文件夹。为此,添加特定目录的位置路径以递归列出它。我们希望使用下面更新的命令递归地列出“home”目录中“Documents”目录的所有文件和文件夹。输出显示“Documents”文件夹中的所有文件和文件夹及其额外信息。
使用“查找”命令递归列出
请自己清楚,并非所有 Linux 系统(例如 macOS、类 Unix 操作系统)都可以选择使用“-R”来列出目录。在这种情况下,还有其他命令可以满足我们的需求,即“find”和“print”命令。在此命令中,我们将给出文件夹的路径以及使用“-ls”命令的作用。当命令中使用“-ls”时,这意味着它还将显示有关特定目录的驻留文件和文件夹的额外信息。在 shell 中尝试以下命令来递归列出目录“Documents”的所有文件和文件夹。
现在,您必须在 shell 中尝试相同的指令,但稍作更改。我们将避免在此命令中使用“-ls”标志来停止显示有关文件的附加信息。在 shell 中执行下面列出的查询,您将获得显示的输出。
使用“-du”命令递归列出
让我们看一下另一个示例,使用另一种新方法递归列出文件或目录。这次,我们将使用“-du”命令来实现我们的目的。该命令包含“-a”标志。除了标志之外,我们还必须指定目录位置。让我们在终端 shell 中执行以下指令来递归列出“Documents”目录中的所有文件夹或文件。输出显示了它的 5 条记录,如下所示。您可以看到此命令还显示每个文件中驻留的字节数。
使用“tree”命令递归列出
最后但并非最不重要的一点是,我们有一个非常简单易用的“tree”命令方法来递归列出文件或文件夹。到目前为止,我们不会在此命令中使用任何标志。您必须指定目录位置以及关键字“tree”。让我们使用下面列出的命令来举一个例子。输出显示目录“Documents”的“树”分支类型输出。它在输出中显示 0 个目录和 5 个文件。
让我们在不同的位置尝试相同的“tree”命令。这次我们递归列出用户“aqsayasin”的“Home”目录的文件夹。输出显示文件夹“Home”的分支,共有 14 个不同的文件夹、子文件夹和 5 个文件。
结论
我们已经尝试了所有递归方法来递归列出目录和文件,例如“-lR”标志、查找和打印、du 和 tree 命令