为什么命令“ ls "*" ”没有显示任何内容?

为什么命令“ ls "*" ”没有显示任何内容?
 ls "*"

这在我的目录中没有显示任何内容。为什么?

*通配符不是能显示一切吗?

答案1

当它在双引号中时,*不会被视为全局,因此不会被扩展。因此,您要求ls列出一个名为 的文件*,该文件可能不存在。

要查看所有文件,您可以ls不带任何参数运行,因为它的默认行为是显示当前目录中的所有文件。如果您ls出于某种原因想要将所有文件作为参数传递给,只需删除引号,然后运行

ls *

但这确实类似于

ls

除了如果您有很多文件*可能会扩展以向 传递太多参数ls,并且ls *还会显示目录的内容,而ls它本身只会显示目录位于当前目录中而不会下降到它们。

答案2

ls *.* /Dir (dir is optional) 

列出用户当前工作目录(由 pwd 找到)或 /Dir 中的每个文件(无论文件类型)和

ls * /Dir (dir optional)

列出用户当前工作目录或 /Dir 中的每个文件和目录。然而,

ls "*" & ls *.* 

不会递归列出,因为您需要

ls -R *.* /Dir

或者

ls -R "*" /Dir

至于为什么

ls "*"

无法正常工作,你是正确的: * 是通配符,当你这样调用 ls 时:

ls "*"

您要求 bash 查找名称中带有星号的文件和/或目录。我安装了一个 IDE,但找不到它的配置和主文件,所以我使用以下命令来查找文件:

(找到与模式匹配的文件并将它们重定向到特定文件)

locate *eclipse* >locate_eclipse.txt
locate *tar* > locate_tar.txt
locate *.tar* > locate_".tar".txt
locate *compiler* > locate_compiler.txt
locate *JRE* > locate_JRE.txt
locate *jre* > locate_jre.txt

(搜索整个文件系统并仅打印与模式匹配的文件系统)

ls -R / | grep "eclipse"
ls -R / | grep "tar"
ls -R / | grep ".tar"
ls -R / | grep "compiler"
ls -R / | grep "JRE"

很抱歉长篇大论,但我试图涵盖大部分基础知识。

相关内容