忽略模式
概要
.stignore
描述
这是 Syncthing 同步文件夹的忽略模式语法指南
语法
.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
不是。