0

我在 shell 中遇到了一个关于文件系统的问题。tmp/**/*和有什么区别tmp/*?我在我的系统中进行实验,有这个目录 dir2

dir2
     -->dir1
         -->xx2
     -->ff.txt 

我跑ls dir2/*

dir2/ff.txt

 dir2/dir1:
 xx2

然后我运行ls dir2/**/*

dir2/dir1/xx2

所以这意味着**忽略这个目录(比如忽略dir1),有人可以帮助我吗?

4

1 回答 1

0

我认为题型测试存在格式问题,但我会根据题名和例子来回答。

在路径的任何单个级别上,单星号和双星号之间不应该有任何区别。任何一个表达式都匹配任何名称,除了以点开头的隐藏名称(这可以通过 shell 选项更改)。所以:

  • tmp/**/*(等价于tmp/*/*)被扩展为所有嵌套在tmp. 第一个星号仅扩展到目录而不是第一级的文件,因为它后跟一个斜杠。
  • tmp/*扩展到任何嵌套在内部深处的一层tmp

为此,ls如果在其命令行上给出目录,则将列出目录的内容。这可以通过添加-d选项来覆盖ls

于 2012-05-21T09:05:51.893 回答