使用 ls 和其他命令仅列出 Linux 中的目录 您所在的位置:网站首页 linux中的目录文件用ls显示是绿色的怎么办 使用 ls 和其他命令仅列出 Linux 中的目录

使用 ls 和其他命令仅列出 Linux 中的目录

2024-07-16 15:05| 来源: 网络整理| 查看: 265

使用 ls 和其他命令仅列出 Linux 中的目录

列出目录的内容很容易。但是,如果您只想列出目录,而不列出文件和链接怎么办?

Linux 中的 ls 命令用于列出任意目录的内容。

默认情况下,它列出所有内容,无论是文件、目录、链接还是命名管道。

但是如果您只想列出目录怎么办?你是怎样做的?

与 Linux 中的任何事物一样,有多种方法可以完成同一任务。仅列出目录没有什么不同:

ls -d */

ls -l | grep '^d'

寻找 。 -最大深度 1 -类型 d

回声*/

树-d-L 1

不用担心。我会详细解释事情。这是我将在此处的示例中使用的目录的内容:

使用 ls 命令仅列出目录

使用熟悉的 ls 命令来执行此操作总是好的,因为这是用于显示目录内容的命令。

要仅列出子目录,请在 ls 命令中使用 -d 选项,如下所示:

ls -d */

这是它显示的输出:

[abhishek@localhost Documents]$ ls -d */ another_dir/ my_dir/

为什么是*/?因为没有它,ls -d 将仅返回目录名称。 -d 选项列出目录而不是其内容(包括文件、目录等)。

*/ 是一种模式。使用 * 列出所有内容(包括子目录的内容),而 / 将模式限制为目录。

这张图很好地描述了这种差异。

您可以将其与长列表选项 -l 和大多数其他选项结合使用:

[abhishek@localhost Documents]$ ls -ld */ drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir/ drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir/

如果您不希望目录名称末尾有尾部斜杠(/),可以使用 cut 命令将其剪切掉:

[abhishek@localhost Documents]$ ls -ld */ | cut -f1 -d'/' drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir 仅列出特定目录中的子目录

上面的命令在当前目录下运行。如果不在同一个目录下怎么办?

在这种情况下,您可以在目录路径末尾使用 */ 和 ls -d:

ls -d Path/To/Dir/*/

下面是我移出 Documents 目录,然后仅列出 Documents 目录内的目录的示例:

[abhishek@localhost ~]$ ls -ld Documents/*/ drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 Documents/another_dir/ drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 Documents/my_dir/

您是否注意到它没有列出隐藏目录?这是该方法的一个缺点。您可以使用 ls -d .*/ 来显示隐藏目录,但它仅显示隐藏目录。

结合使用 ls 和 grep 命令

您始终可以依靠古老的 grep 命令来过滤特定内容的输出。

如果列出的内容很长,您可以识别目录,因为以 d 开头。

可以使用grep来过滤以d开头的内容:

ls -l | grep '^d'

但这为您提供了比目录名称更多的字段:

[abhishek@localhost Documents]$ ls -l | grep '^d' drwxrwxr-x. 1 abhishek abhishek 16 Nov 7 18:22 another_dir drwxrwxr-x. 1 abhishek abhishek 44 Nov 7 18:22 my_dir 使用 find 命令仅列出目录

以下是如何使用 find 命令仅列出子目录:

find directory_path -maxdepth 1 -type d

我希望您熟悉 find 命令。尽管如此,我还是会解释一下。

使用type d,您可以要求 find 命令仅查找目录。

使用 maxdepth 1,您可以要求 find 命令仅将搜索保持在当前级别(而不进入子目录内部)。

[abhishek@localhost Documents]$ find . -maxdepth 1 -type d . ./my_dir ./another_dir ./.my_hidden_dir

正如您在上面的输出中看到的,它还显示了隐藏目录。

使用tree命令仅列出目录

如果您的目标是仅列出目录,您也可以使用 tree 命令。

默认情况下,tree 命令为您提供完整的目录结构。您可以将其修改为仅显示目录并且仅显示当前级别。

tree -dai -L 1

d - 仅查找目录

a - 查找隐藏文件和目录

i - 从显示中删除树结构

L 1 - 不要进入子目录

这是输出:

abhishek@localhost Documents]$ tree -dai -L 1 . another_dir my_dir .my_hidden_dir 3 directories

使用 echo 命令列出目录

最不可能的候选人?您会惊讶地发现 Linux 中的 echo 命令也可以用于显示目录的内容。尝试使用 echo * 并亲自查看。

与 ls 命令类似,您也可以使用 */ 模式仅列出当前工作目录中的目录。

echo */

以下输出与使用 ls -d 命令得到的输出相同:

可能有更多方法仅列出目录而不列出文件。事实上,根据您要寻找的内容,这里讨论的方法可能有一些假设和但是。

如果您的目标只是显示目录,那么我讨论的大多数命令都可以工作。如果您想要更具体的内容,例如仅获取带斜杠的目录名称等,则必须自行进行一些格式化。

我希望这篇 Linux 技巧对您有所帮助。随时欢迎提出问题和建议。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有