首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归全球化**/*和*/**

递归全球化**/*和*/**
EN

Unix & Linux用户
提问于 2018-10-31 16:08:17
回答 1查看 3.9K关注 0票数 3

我正在学习通配符递归全球化,并尝试

代码语言:javascript
复制
$ ls **/* | wc -l
15
$ ls */** | wc -l
15

他们的结果是一样的。

**/**/**之间有什么区别吗?

EN

回答 1

Unix & Linux用户

发布于 2018-10-31 16:16:21

*/**将只匹配目录(及其子目录和文件);它将不匹配当前目录中的文件(非目录),因为它的*/部分在开始**珠星扩展之前需要一个目录前缀。至于**/*,尾随的/*是无关的,因为**本身将扩展到当前目录下的每个文件和目录(但需要dotglob选项)。由于每个目录都已在这一点之前展开,所以尾随的/*不匹配任何内容。

使用ls进行测试时要小心,因为它将“有益”地读入可能传递它的任何目录;相反,请考虑如下所示:

代码语言:javascript
复制
printf "%s\n" */**
printf "%s\n" **/*

还请注意,通往wc -l的管道可能会误导您进行实际计算;请考虑:

代码语言:javascript
复制
$ touch a b\nc'
$ ls -1
a
b?c
$ ls | wc -l
3     ## WRONG!
票数 5
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/478933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档