Сопоставьте все файлы, которые находятся внутри папки, и игнорируйте одну папку внутри - PullRequest
0 голосов
/ 20 апреля 2019

У меня следующая структура каталогов:

root
├─ files
│  ├─ folder1
│  │  ├─ file1.js
│  |  └─ file2.js
│  ├─ folder2
│  │  └─ file3.js
│  ├─ file4.js
|  └─ file5.js
└─ config.js

Как мне сопоставить каждый файл внутри file (и его подкаталогов), кроме файлов, которые находятся в folder1, в данном случае file3.js, file4.js и file5.js?Я знаю, что могу исключить folder1 со следующим: files/!(folder1)/*.js, но это соответствует только file3.js.

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Попробуйте **/files/{*.js,!(folder1)*/*.js}.Вы можете проверить, используя globster.xyz

1 голос
/ 20 апреля 2019

Вероятно, есть более элегантный способ сделать это, так как я не слишком знаком с 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']
...