考虑以下文件结构:
root
|- folder1
|- folder2
|- folderN
|- file1
|- file2
|- fileN
如何仅定位文件而不逐个排除(
!
)每个文件夹?
因此,您只需要某个根目录中的文件,而不需要文件夹 和 这些文件夹的内容。
您正在寻找的 glob 是
*
。这将选择您当前所在目录中的所有文件。或者,如果您想选择 root/*
文件夹中的所有文件(不包括其子文件夹),请使用
root
。要选择子文件夹和子文件夹内容,您必须使用 Globstar:**
您可以轻松测试您的 glob 这里:
root/*
!root/*/
如果 root/*
仅匹配
root
目录中的所有内容,则
!root/*/
将从匹配中排除所有目录。
全面披露: 当我想只包含根文件夹中的文件以及 1 个子目录时,我遇到了 OP 的 git 稀疏结帐问题。
IMO,@ddprrt 的解决方案应该可以与 git 一起使用,但似乎 git 有自己的 glob 规则的解释和实现。