忽略文件说明

优质
小牛编辑
148浏览
2023-12-01

3.2.6.1.1. 忽略文件

如果有些文件不想与其他设备同步,则可以将其添加到忽略文件列表里,忽略文件存储在每个任务目录下的

.verysync/IgnoreList中,每行一个规则。 可以直接用普通文本编辑器修改该文件,也可以在界面目录选项里的忽略列表编辑器中进行修改。

忽略文件的修改仅在本机生效,并不会同步到其它设备上。

提示:

  1. 被忽略文件列表规则匹配到的文件将不扫描,不索引,不接收。
  2. 如果目录中包含忽略的文件,这将会阻止目录被删除,可以在规则前面添加(?d)标识,以允许删除。

3.2.6.1.2. 快速入门例子

由于完整的规则描述对于普通用户接受起来有一定的门槛,这一小节以最常见的例子来入门

  1. 忽略所有.log 后缀的文件往规则列表最后写入
     *.log
    
  2. 忽略名为work的目录或文件,规则如下
     *.work
    
  3. 忽略 同步目录最上级的.git目录
     /.git
    
  4. 忽略所有mp3和mp4文件 规则如下

     *.mp3
     *.mp4
    
  5. 只同步或接收.png文件

     !*.png
     *
    

其余的类似,相信简单的忽略规则你已入学会。

3.2.6.1.3. 修饰符

(?i) 表示该规则忽略大小写 (?d) 表示被忽略的文件当上级目录删除时,允许被删除

3.2.6.1.3.1. 忽略规则语法说明

忽略文件列表包含文件或路径模式列表。 第一个匹配的模式将决定给定文件的处理方式。

规则的编写规则类似于正则表达式。但进行了简化。

普通文件名匹配规则,如规则foo, 将匹配名为foo的文件或目录,包括任意级别的子目录或文件。 空格被视为普通字符。

* 星号匹配文件名中的零个或多个字符,但不匹配目录分隔符。 规则te*st,匹配test,subdir/telerest, 但不匹配tele/rest

** 双星号匹配如上,但也匹配目录分格符。 规则te**st,匹配test,subdir/telerest, 也匹配tele/rest, 和tele/sub/dir/rest

? 问号匹配不是目录分隔符的单个字符。 te??st匹配tebest但不匹配teb/sttest

[] 方括号[]中的字符被解释为字符范围[a-z]。 在使用此语法之前,您应该对正则表达式字符类有基本的了解。

/ 以目录分隔符/开头的模式,仅在当前目录中进行匹配。 / foo匹配foo但不匹配subdir/foo

#include 以#include开头的模式会从指定文件加载模式。 文件不存在或包含多次是错误的。 请注意,被包函的文件可以存在于任何子目录中, 但规则描述方式,仍然是相对于文件夹根目录的。示例:#include myignore.txt

!!开头的模式表示为否定模式:包含匹配文件(即不被忽略)。

(?i) 以 (?i) 前缀开头的模式表示该模式不区分大小写进行匹配。 如(?i)test将匹配TEST,tEst。 (?i)前缀可以与其他模式组合,例如(?i)!picture*.png表示Picture1.PNG应该同步。 在Mac OS和Windows上,模式始终不区分大小写。

(?d)(?d)前缀开头的模式允许删除这些文件,一般用于描述操作系统生成的临时文件,因为这些文件一般我们不希望它影响目录删除如群晖系统上(?d)@eadir.

////开头的模式为注释语法, 不会应用于文件匹配上。

可以按任何顺序指定前缀(例如(?d)(?i)),但不能在一对括号中同时指定多个模式如((?di))

3.2.6.1.3.2. 规则例子

假如目录结构如下

.DS_Store
foo
foofoo
bar/
baz
quux
quuz
bar2/
baz
frobble
My Pictures/
Img15.PNG

我们的忽略规则如下

(?d).DS_Store
!frobble
!quuz
foo
*2
qu*
(?i)my pictures

所有名为foo的文件和目录,以2结尾或以qu开头都将被忽略。 最终结果变为:

.DS_Store # 忽略, 该规则会阻止父目录删除。
foo # 忽略, 匹配规则foo
foofoo # 同步, 不匹配规则 "foo",如果有规则*foo或者foo*会匹配
bar/ # 同步
baz # 同步
quux # 忽略, 匹配规则 "qu*"
quuz # 同步, 匹配规则 "qu*" 但前面已定义"!quuz"
bar2/ # 忽略, 匹配规则 "*2"
baz # 忽略,父目录匹配*2规则, 父目录忽略 所以忽略
frobble # 忽略,父目录忽略 "!frobble" 不能起到作用。
My Pictures/ # 忽略,匹配不区分大小写规则
(?i)"my pictures"
Img15.PNG # 忽略,父目录已忽略