glob 介绍

2017-08-15 17:44:21

glob 最早是出现在类Unix系统的命令行中, 是用来匹配文件路径的。比如,lib/**/*.js 匹配 lib 目录下所有的 js 文件。

除了在命令行中,我们在程序中也会有匹配文件路径的需求。于是,很多编程语言有了对 glob 的实现 ,如 Python 中的 glob 模块; php 中的 glob 方法。

有了 glob,匹配文件路径变的 so easy~


oh-my-glob

使用场景

任务管理

如,我们要将 lib 目录下所有的 js 文件下都进行压缩。我们用 Gulp 可以这么写:

var uglify = require('gulp-uglify');
 gulp.task('compress', function() {
  return gulp.src('lib/**/*.js') // 选则 lib 下的所有 js 文件
    .pipe(uglify()) // 压缩
    .pipe(gulp.dest('dist')); // 将压缩后的文件输出到 dist 目录下
});

命令行

命令行中很多命令都可以用 glob。 如

grep '学习' *.md

上面目录做的是,从当前目录中查找文件内容中包含"学习",并且文件格式为 md 的文件。

匹配规则

不同语言的 glob 库支持的规则会略有不同。下面是 node-glob 的匹配规则。

  • * 匹配任意 0 或多个任意字符

  • ? 匹配任意一个字符

  • [...] 若字符在中括号中,则匹配。若以 !^ 开头,若字符不在中括号中,则匹配

  • !(pattern|pattern|pattern) 不满足括号中的所有模式则匹配

  • ?(pattern|pattern|pattern) 满足 0 或 1 括号中的模式则匹配

  • +(pattern|pattern|pattern) 满足 1 或 更多括号中的模式则匹配

  • *(a|b|c) 满足 0 或 更多括号中的模式则匹配

  • @(pattern|pat*|pat?erN) 满足 1 个括号中的模式则匹配

  • ** 跨路径匹配任意字符



作者:九彩拼盘
链接:http://www.jianshu.com/p/ce7cf53274bb
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


  • 2019-06-03 00:07:32

    Android程序Crash时的异常上报

    家都知道,android应用不可避免的会发生crash,无论你的程序写的多完美,总是无法完全避免crash的发生,可能是由于android系统底层的bug,也可能是由于不充分的机型适配或者是糟糕的网络状况。当crash发生时,系统会kill掉你的程序,表现就是闪退或者程序已停止运行,这对用户来说是很不友好的,也是开发者所不愿意看到的,更糟糕的是,当用户发生了crash,开发者却无法得知程序为何crash,即便你想去解决这个crash,但是由于你无法知道用户当时的crash信息,所以你也无能为力。是否真的这样呢,其实android中有处理这类问题的方法,请看下面Thread类中的一个方法#setDefaultUncaughtExceptionHandler

  • 2019-06-04 16:40:30

    为了美观当网页图片不存在时不显示叉叉图片

    当在页面显示的时候,万一图片被移动了位置或者丢失的话,将会在页面显示一个带X的图片,很是影响用户的体验。即使使用alt属性给出了”图片XX”的提示信息,也起不了多大作用。

  • 2019-06-04 17:38:44

    PHP时间转换今天昨天前天几天前

    实际情况应该是,昨天任何时间都算一天前,前天任意时间都算2天前,所以自己琢磨了一番,去动态更新时间与今天23:59:59相差的时间秒数与86400(24 x 3600)相除后,向下取整,这样就得到了相差的天数,比如昨天00:00~昨天23:59:59的任何时间与今天的23:59:59,都相差 86400~(86400 x 2) 天,也就是2天。

  • 2019-06-04 17:44:14

    【VUE】图片预览放大缩小插件

    在看项目时,突然看到预览图片的弹窗,感觉好僵硬,不能放大,不能切换,于是便在网上找下关于图片预览的插件,有找到三个插件,具体的优劣势的看自己的使用吧,我目前只是在电脑查看效果,分别是viewerjs插件、基于photoswipe的vue-photo-preview插件以及vue-picture-preview插件 作者:北极星丶超帅的 链接:https://www.jianshu.com/p/e3350aa1b0d0 来源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 2019-06-04 21:32:05

    Android 全局Dialog的简单实现

    这里所说的全局Dialog是指无论当前应用是处于哪一个页面上,都能够及时弹出Dialog来提示用户一些信息,用户体验不会很好,一般应用于优先级非常高的通知。