【发布时间】:2017-09-22 20:46:53
【问题描述】:
globstar bash 选项的文档如下:
全球之星
如果设置,文件名扩展上下文中使用的模式“**”将匹配所有文件以及零个或多个目录和子目录。如果 该模式后跟一个“/”,只有目录和子目录 匹配。
这让我觉得给定这样的层次结构:
└── dir1
└── dir2
└── dir3
└── file.txt
我可以使用**file* 之类的模式匹配此树结构中的file.txt。但它不起作用:
ls **file*
ls: cannot access '**file*': No such file or directory
这可行:
ls **/file*
dir1/dir2/dir3/file.txt
我想知道** 是否应该匹配或者一个文件的目录或一个完整的文件名。更精确的文档链接将不胜感激。
【问题讨论】:
-
@anubhava 不,启用 globstar 后,它将递归匹配所有目录
-
@thatotherguy:但这不是我在 bash 中的行为。
shopt -s globstar; mkdir adir; touch adir/afile; ls **afile给ls: cannot access '**afile': No such file or directory。但是,当我执行ls **/afile时,我会得到adir/afile -
@anubhava 你的评论是关于
**后跟/,它的行为确实是这样的