我具有以下目录结构:
root
├─ files
│ ├─ folder1
│ │ ├─ file1.js
│ | └─ file2.js
│ ├─ folder2
│ │ └─ file3.js
│ ├─ file4.js
| └─ file5.js
└─ config.js
如何匹配file
(及其子目录)中除folder1
中的文件(在这种情况下为file3.js
,file4.js
和{{1 }}?
我知道我可以用以下内容排除file5.js
:folder1
,但这只匹配files/!(folder1)/*.js
。
答案 0 :(得分:1)
由于我对glob不太熟悉,可能有一种更优雅的方法来执行此操作,但是我认为这会满足您的要求。
import glob
exclude_pattern = ['folder1']
file_list = glob.glob('./files/**/*', recursive=True)
for pattern in exclude_pattern:
exclude_patternmatch = list(filter(lambda x: pattern in x, file_list))
for item in exclude_patternmatch:
file_list.remove(item)
print(file_list)
输出:
['./files/file6.js', './files/file5.js', './files/folder2/file3.js', './files/folder2/file4.js']
答案 1 :(得分:1)
尝试**/files/{*.js,!(folder1)*/*.js}
。您可以使用globster.xyz