ZSH:使用.directories进行递归通配

Modified on: Sat, 30 Jun 2018 04:52:30 +0800

我认为是glob模式:

**/(*|.*)

代表以dot(.)开头的每个文件夹和文件,但它会跳过当前目录中以.

什么是glob模式意味着:

  

每个文件和文件夹,可能是也可能不是以.开头的
  当前和更深的文件夹

另外:如何从递归的glob模式(例如上面的那个)中排除特定的文件夹(甚至更好的是glob子模式)?

我已尝试以下方法从当前级别排除文件夹.hg(但包括以.字符开头的其他文件夹):

**~.hg/*

但它没有递归到更深的目录。

最佳答案

制作glob模式匹配点文件的最简单方法是使用D glob限定符

**/*(D)

~的优先级低于/,所以**~.hg/***减去.hg/*的匹配项。但是**只有在/之前才是特殊的,所以这里它匹配当前目录中的文件。要排除.hg及其内容,您需要

**/*~.hg~.hg/*(D)

请注意,zsh仍将遍历.hg目录,这可能需要一些时间;这是**的限制:您无法直接在此级别设置排除列表。

作者:Gilles

相关问答

添加新评论