glob 模式的 Linux Shell 通配符介绍

问题

今天遇到一个麻烦,如何在编译器中设置 "files.exclude",排除掉某些我们不愿意看的文件呢?查阅资料得知这种字段的填写就需要用到 glob 模式的通配符。

概念

glob 模式(globbing)也被称之为 shell 通配符,名字的起源来自于 Unix V6 中的 /etc/glob (详见 man 文档)。glob 是一种特殊的模式匹配,最常见的是通配符拓展,也可以将 glob 模式设为精简了的正则表达式,在最新的 CentOS 7 中已经删除了 glob 的相关描述文档,删除的原因由于 glob 已经整合到了 shell 之中,然后就有了 shell 通配符。

笔者在查阅资料的时候发现关于 glob 模式或者 globbing 的相关描述以及文档是少之又少,所以特地在这里整理一下并重新写一写使用方法

语法

*   匹配任意长度任意字符
?   匹配任意单个字符
[list]  匹配指定范围内(list)任意单个字符,也可以是单个字符组成的集合
[^list] 匹配指定范围外的任意单个字符或字符集合
[!list] 同[^list]
{str1,str2,...} 匹配 srt1 或者 srt2 或者更多字符串,也可以是集合

专用字符集

[:alnum:]	任意数字或者字母
[:alpha:]	任意字母
[:space:]	空格
[:lower:]	小写字母
[:digit:]	任意数字
[:upper:]	任意大写字母
[:cntrl:]	控制符
[:graph:]	图形
[:print:]	可打印字符
[:punct:]	标点符号
[:xdigit:]	十六进制数
[:blank:]	空白字符(未验证)

例子

匹配当前文件夹下的 node_modules 下的所有文件

"./node_modules/*": true

拿 vscode 设置中的 "files.exclude" 举例,如果我希望不显示 node_modules 下的公司内部的包 @souche-f2e 和 @souche-vue ,也显示 vue 全家桶,其他包全都隐藏,则:

"files.exclude": {
    "./node_modules/[^@v]*": true
}
posted @ 2020-04-18 11:24  Ever-Lose  阅读(391)  评论(0编辑  收藏  举报