当我在我的主目录中,在终端中键入“ls*s*”时,它会显示其名称中包含“s”的所有文件夹和文件(例如,Music)。但是当我输入“ls*si*”时,它没有显示任何东西(我认为应该列出音乐)。为什么会这样呢?
发布于 2013-05-24 21:12:45
这是一种错觉。通配符是在命令执行之前展开的,“ls”显示的内容取决于展开产生的单词数。当“ls”列出多个内容时,它会显示它列出的每个文件夹的名称。当“ls”只列出一个文件夹时,它只显示内容,而不显示名称。
当您键入“ls*s*”时,字符串将扩展为多个名称,因为目录中有多个名称包含“s”。当“ls”列出多个内容时,它会显示目录名以及每个目录的内容,因此您会得到如下清单:
Desktop:
foo
Music:
iTunes当您键入“ls*si*”时,字符串仅扩展为一个名称,因为目录中包含“si”的唯一名称是“Music”。结果就像你输入了“ls Music”一样。当“ls”列出一个文件夹时,它只显示该文件夹的内容,而不显示文件夹的名称,因此您会得到如下所示的列表:
iTunes要使“ls”只列出匹配的内容,而不列出其内容,请使用“ls -d *si*”。“-d”的意思是以列出文件的方式列出目录,而不是列出其内容。
https://stackoverflow.com/questions/16735652
复制相似问题