glob模式及 . 和 ..
所谓的 glob 模式是指 shell 所使用的简化了的正则表达式,它的规则如下:
1、星号(*)匹配零个或任意
多个
字符;
2、
问号(?)只匹配一个任意字符;
3、[abc],匹配任何一个列在方括号中的字符,这个例子要么匹配一个 a,要么匹配一个 b,要么匹配一个 c)
;
4、
[0-9] or [a-z],
如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配,比如 [0-9] 表示匹配所有 0 到 9 的数字,[a-z]匹配从a到z的26个字母;
而 . 和 .. 在文件系统中分别表示:当前目录 和 上级(父)目录
那么如何构建匹配除了"."和".."外所有文件的glob模式呢?(该问题转自http://lcuc.org.cn/node/163
)
http://lcuc.org.cn/node/163 写道
这样考虑的话会比较简单:
* 匹配所有不以"."开头的文件;
.* 匹配所有所有以"."开头的文件,但包括"."和"..",它们是你想排除的;
.[~.]* (只对较新的shell有效;一些shell用"^"代替"!";POSIX shell必须接受"!",但也可接受"^";所有可移植程序不应该在"["后立即跟随未加引号的"^") ,匹配所有以"."开头,跟随非"."的文件;但它会遗漏"..foo";
.??* 匹配所有开始以"."开头且至少3个字符常。 这避开了"."和"..",但会遗漏如".a"
所以要安全地匹配除了"."和".."的所有文件你需要三个模式,(如果你没有类似".a"的文件名,可以不用第一个模式)
请注意:以上写法,在不同shell下会有具体差异。
分享到:
相关推荐
点网 .NET的快速(可能是最快)的全局库。 科 建立状态 NuGet 主 开发 该库不使用正则表达式-我想做得更快。 最新的基准测试表明DotNet.Glob性能优于DotNet.Glob... 从模式解析全局 var glob = Glob.Parse("p?th/*
Unix样式的路径名模式扩展目录快速开始该库有两种版本: 两个文件版本: glob.h和glob.cpp single_include/单个头文件版本没有外部依赖-仅是标准库需要C ++ 17 std::filesystem 如果您不能使用C++17 ,则可以集成。...
球状使用外壳使用的模式(例如星星和东西)匹配文件。 这是JavaScript中的全局实现。 它使用minimatch库进行匹配。用法用npm安装npm i globvar glob = require ( "glob" )// options is optionalglob ( "**/*.js" , ...
微小的glob微小且极其快速的库,可使用glob模式匹配文件和文件夹。 “ Globs”是用于匹配文件和文件夹的特定类型的模式的通用名称。 这是您的微小glob模式的模式,微小而又快速的库可以使用glob模式匹配文件和文件夹...
glob, 支持与 Unix shell 样式模式匹配的文件路径 glob支持与 Unix shell 样式模式匹配的文件路径。 文档文档用法要使用 glob,请将它的添加到你的Cargo.toml 中:[dependencies]glob = "0.2"然后将它添加到你的
简单的功能来转换webpack入口对象中的glob模式 安装 npm install webpack-glob-entry --save-dev 用法 只需使用glob模式调用entry函数 var entry = require ( 'webpack-glob-entry' ) module . exports = { entry ...
阅读全局承诺 版本: 使用 glob 模式搜索文件并异步读取它们 var readGlob = require ( 'read-glob-promise' ) ;readGlob ( '*.txt' ). then ( function ( bufs ) { bufs ; //=> [, , ...]} ). catch ( function ( ...
前端开源库-gitignore-to-globgitignore到glob,转换.gitignore模式到与glob包兼容的模式(由grunt和其他人使用)
gitignore-globs 将.gitignore文件解析为一组 glob 模式。用法.gitignore: node_modulespackage.json索引.js: var parse = require('gitignore-globs');var globs = parse('.gitignore');console.log(globs);// ...
pattern {String} :用于匹配的Glob模式。 (计划多个模式支持) options {Object} : glob-fs或中间件的选项。 例子: // sync var files = glob . readdirSync ( '*.js' , { } ) ; // async glob .
使用 glob 模式通过package.json进行配置。 $ npm install rerun-script --save-dev 用法 Usage: rerun-script [options] Options: -a, --automatic run tests automatically -h, --help output usage ...
Glob是一个Golang软件包,它添加了对字符串的UNIX shell式模式匹配的支持,通常称为“ globbing”。 它以3条款New BSD许可发布。 有关详细信息,请参见 。 import glob "github.com/ganbarodigital/go_glob" g := ...
如果给定的字符串看起来像glob模式或extglob模式,则返回true 。 这样就可以轻松创建仅在必要时使用诸如node-glob之类的外部模块的代码,从而大大加快了代码执行和初始化时间,并提供了更好的用户体验。 请考虑...
球状 Glob的此实现基于fnmatch和glob的IEEE Std 1003.1,2004版(开放组基础规范,第6版)。 可以在网上找到其规范: 和 。 请注意,由于这是基于POSIX规范的,因此全局模式中的路径分隔符始终为/ ,转义符始终为\ ...
提供与类似的API,但是您也可以使用模式数组来代替单个模式。 安装 npm install --save glob-all 用法 给定的文件: files ├── a.txt ├── b.txt ├── c.txt └── x ├── y.txt └── z.txt 我们...
路径模式匹配和globbing支持doublestar ( ** )模式。 关于 doublestar是路径模式匹配和关联的实现,并支持“ doublestar”(又称为globstar: ** )模式。 双星模式会递归地匹配文件和目录。 例如,如果您具有...
前端开源库-path-to-glob-pattern路径到全局模式,将文件/目录路径转换为全局模式。
使用外壳使用的模式(例如星星和东西)匹配文件。 注意:这只是的包装版本 安装 $ npm install glob-promise glob 笔记: 在设置为peerDependency 如果在依赖关系树中未显式依赖对peerDependencies则npm <= 2...
1. glob文件名模式匹配 尽管glob API很小,但这个模块的功能却很强大。只要程序需要查找文件系统中名字与某个模式匹配的一组文件,就可以使用这个模块。要创建一个文件名列表,要求其中各个文件名都有某个特定的扩展...