2014-11-09 5 views
2

Представьте себе следующую структуру каталогов:В чем разница между dir/*, dir/**, dir/**/*, dir /**/*.* в globbing?

web/ 
    sub1/ 
    1.js 
    3.js 

Когда я использую модуль узла «Del» для удаления файла или каталога, поведение dir/* , dir/**, dir/**/*, dir/**/*.* отличается.

web/* 

дель ([ 'web/*', 'Web/sub1/1.js!'])
-> все под веб/удаляется, веб/sub1/1.js удаляется, а
дель ([ 'web/*', 'Web/3.js!']})
-> все под веб/удаляется за исключением 3.js является keeped

web/** 

дель ([ 'web/**', «! web/sub1/1.js ']), del ([' web/** ','! web/3.js '])
-> результат двух форм одинаковы, веб/полностью удаляется

web/**/* 

дель ([ 'web/**/*', 'Web/sub1/1.js!'])
-> все под Web/удаляется
дель ([ 'web/**/*', 'веб/3.js!']})
-> все под веб/удаляется за исключением 3.js является keeped

web/**/*.* 

дель ([ 'web/**/*.*', '! Web/sub1/1.js'])
-> все файлы под web/удалены, кроме web/sub/1.js, и сохраняется структура каталогов del (['web/**/*.*', '! Web/3.js']})
-> все файлы под web/удаляется кроме 3.js и сохраняется структура каталогов

После выполнения вышеуказанного теста я полностью смущен, я не могу суммировать правило из вышеприведенного теста. И я не могу найти подробную документацию, объясняющую их. Может кто-нибудь здесь помочь?

ответ

0

Узел del использует node-glob для соответствия целей и rimraf для удаления согласованных целей. Все согласованные цели будут переданы rimraf, а rimraf удалит файл или будет рекурсивно удалять каталог. Таким образом, ответ на ваш вопрос заключается в том, какие цели соответствуют вашим шаблонам.

веб/*

Все дочерние элементы подбираются: web/sub1, web/3.js. Все будет удалено, !web/sub1/1.js ничего не исключает. Но !web/3.js исключает файл, поэтому только web/sub1 будет удален рекурсивно.

веб/**

Каталог и все вложенные элементы подобраны: web, web/sub1, web/sub1/1.js, web/3.js.Поскольку каталог будет удален рекурсивно, никакие файлы не будут эффективными.

веб/**/*

Все вложенные элементы подобраны: web/sub1, web/sub1/1.js, web/3.js. web/sub1 будет удален рекурсивно и исключение !web/sub1/1.js не имеет значения. Но исключение !web/3.js хранит файл.

веб /**/*.*

только вложенные файлы совпадают: web/sub1/1.js, web/3.js. Таким образом, никакие каталоги не будут удалены, и исключение файла сохранит его.

Смежные вопросы