ls -d 的核心作用是:只列出目录本身,而不列出目录下的内容。

详细解释
ls 命令的默认行为
我们来看一下 ls 命令在不使用 -d 选项时的默认行为:
- 如果参数是一个普通文件:
ls file.txt会显示该文件的信息。 - 如果参数是一个目录:
ls my_folder会列出my_folder目录下的所有文件和子目录(但不包含以 开头的隐藏文件)。
示例: 假设我们有以下目录结构:
.
├── documents/
│ ├── report.txt
│ └── notes.txt
├── pictures/
│ └── vacation.jpg
└── setup.sh
执行 ls 命令:
ls
输出会是:

documents pictures setup.sh
这里,ls 展示了 documents 和 pictures 这两个目录的名称,以及 setup.sh 这个文件。
-d 选项的作用
我们加上 -d 选项再试一次。ls -d 会告诉 ls:“我只想把目录当作一个普通的‘文件’来对待,不要‘进入’它内部查看内容。”
示例: 还是上面的目录结构,我们执行:
ls -d */
( 是一个通配符,代表“所有以 结尾的项”,也就是所有目录)

输出会是:
documents/ pictures/
你会发现,输出和 ls 非常像,但关键区别在于行为。ls -d 的目的不是为了“看”目录里有什么,而是为了“操作”目录本身。
ls -d 的核心应用场景
ls -d 最常见的用途是配合通配符(, 等)来筛选出特定类型的文件或目录。
只列出目录,不列出目录内容
这是 -d 最经典的应用,使用 通配符可以精确匹配所有目录。
# 只列出当前目录下的所有子目录 ls -d */ # 输出示例 (假设当前目录有 file.txt, dir1/, dir2/) # dir1/ # dir2/
查找特定名称模式的目录
假设你有很多目录,但只想找名字以 "project" 开头的目录。
# 列出所有以 "project" 开头的目录 ls -d project*/ # 输出示例 (假设有 project-alpha/, project-beta/, notes.txt) # project-alpha/ # project-beta/
查找特定名称模式的文件(非常巧妙)
这是 -d 一个不那么直观但非常强大的用法。ls -d 本身不关心你匹配的是文件还是目录,它只关心匹配到的“路径名”本身。
假设你想查找所有以 .log 结尾的文件。
# 列出所有以 .log 结尾的文件(路径) ls -d *.log # 输出示例 (假设有 app.log, error.log, config/) # app.log # error.log
为什么这里用 -d 也能工作?
因为 *.log 这个通配符模式匹配到的都是文件路径。ls -d 的作用是“不要展开这些路径”,所以它就忠实地列出了这些匹配到的文件路径名,如果直接用 ls *.log,效果看起来一样,但 ls 的意图是“列出这些文件的内容”,对于文件来说,这和“列出文件本身”信息是相同的。
与 -l 选项结合,查看目录本身的详细信息
当你想查看一个目录的元数据(如权限、所有者、大小、修改时间)而不是其内容时,-d 选项就必不可少了。
# 查看 documents 目录本身的详细信息 ls -ld documents/ # 输出示例 # drwxr-xr-x 2 user user 4096 Oct 26 10:30 documents/
对比一下:
ls -l documents/: 会列出documents目录里report.txt和notes.txt的详细信息。ls -ld documents/: 只会列出documents这个目录本身的详细信息,第一位的d就表明它是一个目录。
总结表格
| 命令 | 行为 | 输出示例 (基于上面的目录结构) |
|---|---|---|
ls |
列出当前目录下的非隐藏文件和子目录的名称。 | documents/ pictures/ setup.sh |
ls -d */ |
只列出当前目录下的所有子目录的名称。 | documents/ pictures/ |
ls -ld */ |
只列出当前目录下所有子目录本身的详细信息。 | drwxr-xr-x ... documents/drwxr-xr-x ... pictures/ |
ls -l documents/ |
列出 documents 目录下的文件和子目录的详细信息。 |
-rw-r--r-- ... report.txt-rw-r--r-- ... notes.txt |
ls -ld documents/ |
列出 documents 目录本身的详细信息。 |
drwxr-xr-x ... documents/ |
关键要点
- 核心功能:
ls -d将目录视为一个普通对象进行操作,而不是递归地显示其内容。 - 最佳拍档:
-d选项几乎总是与通配符(如 , )一起使用,用于精确匹配文件或目录的名称模式。 - 查看元数据:当你想用
-l查看一个目录的属性(权限、大小等)而不是其内容时,必须加上-d选项,即使用ls -ld <directory>。 - 行为一致性:
ls -d的行为对于文件和目录是一致的——它只显示匹配到的路径名本身,而不会“进入”任何路径去查看其内部结构。
