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"
很抱歉长篇大论,但我试图涵盖大部分基础知识。