【问题标题】:What's the difference between dir/* , dir/**, dir/**/* , dir/**/*.* in globbing?dir/* , dir/**, dir/**/* , dir/**/*.* 之间有什么区别?
【发布时间】:2015-01-05 15:27:02
【问题描述】:

想象以下目录结构:

web/
  sub1/
    1.js
  3.js

当我使用 'del' 节点模块删除文件或目录时, dir/* , dir/**, dir/**/*, dir/**/*.* 不同。

web/*

del(['web/*', '!web/sub1/1.js'])
-> web/ 下的所有内容都被删除,web/sub1/1.js 也被删除
del(['web/*', '!web/3.js']})
-> web/ 下的所有内容都被删除,除了 3.js 被保留

web/**

del(['web/**', '!web/sub1/1.js']), del(['web/**', '!web/3.js'])
-> 两种形式的结果是一样的,web/ 被完全去掉了

web/**/*

del(['web/**/*', '!web/sub1/1.js'])
-> web/ 下的所有内容都被删除
del(['web/**/*', '!web/3.js']})
-> web/ 下的所有内容都被删除,除了 3.js 被保留

web/**/*.*

del(['web/**/*.*', '!web/sub1/1.js'])
-> web/ 下的所有文件都被删除,除了 web/sub/1.js 并保留目录结构 del(['web/**/*.*', '!web/3.js']})
-> web/ 下除3.js 外的所有文件都被删除,目录结构保留

做完上面的测试后,我完全糊涂了,我无法从上面的测试中总结出一个规律。而且我找不到解释这些的详细文档。 有人可以在这里帮忙吗?

【问题讨论】:

    标签: javascript gulp glob


    【解决方案1】:

    节点del 使用node-glob 匹配目标,rimraf 删除匹配目标。所有匹配的目标都将传递给 rimraf,而 rimraf 将删除文件或递归删除目录。因此,您的问题的答案是您的模式匹配哪些目标。

    网络/*

    所有子项都匹配:web/sub1web/3.js。所有将被删除,!web/sub1/1.js 不排除任何东西。但是!web/3.js 排除了文件,所以只有web/sub1 会被递归删除。

    网络/**

    目录和所有嵌套项匹配:webweb/sub1web/sub1/1.jsweb/3.js。因为目录将被递归删除,所以任何文件排除都没有效率。

    网络/**/*

    匹配所有嵌套项:web/sub1web/sub1/1.jsweb/3.jsweb/sub1 将被递归删除,排除 !web/sub1/1.js 无关紧要。但排除!web/3.js 保留该文件。

    网络/**/*.*

    仅匹配嵌套文件:web/sub1/1.jsweb/3.js。因此不会删除任何目录,并且排除文件会保留它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-31
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 2010-12-22
      相关资源
      最近更新 更多