为什么三个问号通配符 (???) 不能与 ls 一起使用?

Mst*_*dav 2 ls shell wildcards

我正在尝试列出 .txt 中名称为 3 个字符的所有文件/usr/bin

ls ???应该这样做,但它列出了目录中的每个文件。请注意,它ls ????按预期工作,仅显示名称为 4 个字符的文件。它也适用于 1、2、5 以及除 3 之外的所有数字。

重现步骤:

  • /usr/bin
  • 类型ls ???

Ulr*_*arz 5

哦,我找到了: ls 将列出您在命令行上传递的目录的内容。至少在我尝试过的 Ubuntu 上,有/usr/bin/X11/一个指向 /usr/bin/. 因此,您确实首先获得了三个字母的文件,然后再次获得了所有内容/usr/bin,这会滚动出所有其他文件。(尝试ls ??? | less看看这个。)

  • 当您向“ls”提供要列出的显式项目列表时,请考虑将“-d”与“ls”一起使用。如果你只想要列表,你也可以使用 `echo ???` 或 `printf '%s\n' ???`。 (5认同)