[[淳帅二代]]
## 忽略模式
### 概要
```
.stignore
```
### 描述
略
### 语法
`.stignore` 文件可包含一系列路径匹配模式,对指定文件的处理方式由第一个匹配到它的模式决定
* 一般的文件名匹配它自己,例如,模式 `foo` 匹配:
* 文件 `foo`
* 文件`subdir/foo`
* 任何名字是 `foo` 的文件夹
空格会被认为是正常字符,除了前缀和后缀的空格会自动被修剪掉。
* 星号(`*`)匹配 0 个或多个字符,但是不匹配路径分割符。例如 `te*me` 匹配:
* `telephone`
* `subdir/telephone`
但是不匹配 `tele/phone`
* 双星号(`**`)匹配 0 或多个字符,包括路径分割符,例如 `te*me` 匹配:
* `telephone`
* `subdir/telephone`
* `tele/sub/dir/phone`
* 问号(`?`)匹配单个字符,不匹配路径分割符,例如 `te??st` 匹配:
* `tebest`
不匹配:
* `teb/st`
* `test`
* 方括号(`[]`)指定符号范围,如 `[a-z]` 匹配:任何小写字符
* 大括号(`{}`)表示一组替代词,如 `{banana,pineapple}` 匹配:`banana` 或 `pineapple`
* 反斜杠(`\`)转义字符。例如 `\{banana\}` 会严格匹配 `{banana}` ,而不会识别成替代词。**转义字符在 Windows 上不支持!**
* 以 `/` 开头的模式:只在根目录下进行匹配。例如 `/foo` 匹配 `foo` 但不匹配 `subdir/foo`
* 开头带有 `#include` 的模式会从指定名字的文件中载入模式。如果这个文件不存在,或者被包括了多次,就会出错。注意,虽然这样可以从子文件夹中的一个文件载入模式,但模式自身仍然是以根目录为参照点的。例子:`#include more-patterns.txt`
* 以 `!` 前缀的模式会否定这个模式:匹配的文件会被 **包括**(也就是,不要忽略)。这一项可以覆盖后续的忽略模式。
* 以 `(?i)` 前缀的模式会启用大小写不敏感。如 `(?!)test` 匹配:
* `test`
* `TEST`
* `sEsT`
`(?!)` 可以与其它模式结合,例如:`(?!)!picture*.png` 会指定 `Picture1.PNG` 不被忽略。在 Mac OS 和 Windows 上,模式永远是大小写不敏感的。
* 以 `(?d)` 前缀的模式,如果这些文件在阻止目录的删除,就会删除这些文件。这个前缀应该被任何 OS 生成的你乐意移除的文件使用。
* 以 `//` 起始的行为注释。
> 注意:
>
> 前缀的顺序可以是任意的,例如 `(?d)(?i)` ,但是不能在同一个括号中,不要使用 ~~`(?di)`~~
>
> 注意:
>
> 顶级的包含模式被特殊对待,并且不会强制 Syncthing 不顾其它忽略模式地扫描整个目录树。例如:`!/foo` 是一个顶级包含模式,`!/foo/bar` 不是。