使用 ls 和其他命令仅列出 Linux 中的目录 | 您所在的位置:网站首页 › linux中的目录文件用ls显示是绿色的怎么办 › 使用 ls 和其他命令仅列出 Linux 中的目录 |
使用 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 1d - 仅查找目录 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 实验室设备网 版权所有 |