菜鸟科技网

ls d命令

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

ls d命令-图1
(图片来源网络,侵删)

详细解释

ls 命令的默认行为

我们来看一下 ls 命令在不使用 -d 选项时的默认行为:

  • 如果参数是一个普通文件ls file.txt 会显示该文件的信息。
  • 如果参数是一个目录ls my_folder 会列出 my_folder 目录下的所有文件和子目录(但不包含以 开头的隐藏文件)。

示例: 假设我们有以下目录结构:

.
├── documents/
│   ├── report.txt
│   └── notes.txt
├── pictures/
│   └── vacation.jpg
└── setup.sh

执行 ls 命令:

ls

输出会是:

ls d命令-图2
(图片来源网络,侵删)
documents  pictures  setup.sh

这里,ls 展示了 documentspictures 这两个目录的名称,以及 setup.sh 这个文件。

-d 选项的作用

我们加上 -d 选项再试一次。ls -d 会告诉 ls:“我只想把目录当作一个普通的‘文件’来对待,不要‘进入’它内部查看内容。”

示例: 还是上面的目录结构,我们执行:

ls -d */

( 是一个通配符,代表“所有以 结尾的项”,也就是所有目录)

ls d命令-图3
(图片来源网络,侵删)

输出会是:

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.txtnotes.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/

关键要点

  1. 核心功能ls -d 将目录视为一个普通对象进行操作,而不是递归地显示其内容。
  2. 最佳拍档-d 选项几乎总是与通配符(如 , )一起使用,用于精确匹配文件或目录的名称模式。
  3. 查看元数据:当你想用 -l 查看一个目录的属性(权限、大小等)而不是其内容时,必须加上 -d 选项,即使用 ls -ld <directory>
  4. 行为一致性ls -d 的行为对于文件和目录是一致的——它只显示匹配到的路径名本身,而不会“进入”任何路径去查看其内部结构。
分享:
扫描分享到社交APP
上一篇
下一篇