全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

过滤规则描述

最近更新时间:2024-12-13 17:33:22

用户可以使用--include--exclude参数,根据每个Key的名称过滤筛选文件。过滤规则支持两种模式:默认模式正则模式,本文将详细介绍两种模式的生效规则。

1. 该文档只针对Util V2.7.0及以上版本生效。

2. --include--exclude可以出现多次,多个规则的顺序不会影响匹配结果。

3. 为避免特殊字符的影响,建议将过滤规则使用双引号""包含。

默认模式

  • *:匹配所有字符。例如:"*.txt"表示匹配所有TXT格式的文件。

  • ?:匹配单个字符。例如:"file?.txt"表示匹配file+任意一个字符的txt文件,如:file2.txt

  • [sequence]:匹配sequence的任意字符,例如:"abc[1-5].jpg"表示匹配文件名为abc1.jpg~abc5.jpg的文件。

  • [!sequence]:匹配不在sequence的任意字符,例如:"abc[!1-5].jpg"表示匹配文件名不为abc1.jpg~abc5.jpg的文件。

正则模式(--enable-regex)

正则模式遵循正则表达式规范。

匹配说明

  1. 若exclude存在,且只要有一个exclude匹配成功,文件被排除。

  2. 若exclude不存在,或所有exclude匹配失败,则由include决定匹配结果。

  3. 若include存在,且只要有一个include匹配成功,文件被选中。若所有include匹配失败,文件被排除。

  4. 若exclude和include都不存在,表示不过滤,文件被选中。

示例:

case1: 无 include,无 exclude,文件被选中
case2: 有 include 且匹配,无 exclude,文件被选中
case3: 有 include 且不匹配,无 exclude,文件被排除
case4: 无 include,有 exclude 且匹配,文件被排除
case5: 无 include,有 exclude 且不匹配,文件被选中
case6: 有 include 且匹配,有 exclude 且匹配,文件被排除
case7: 有 include 且匹配,有 exclude 且不匹配,文件被选中
case8: 有 include 且不匹配,有 exclude 且匹配,文件被排除
case9: 有 include 且不匹配,有 exclude 且不匹配,文件被排除

单规则、多规则匹配示例

以下过滤规则均采用默认匹配模式,若采用正则匹配模式(--enable-regex),规则需符合正则表达式规范。

例如指定生效的文件夹中包含名为file5.txt的文件,如下所示为基于该场景下匹配不同的规则生效结果示例。

1. 单规则匹配

  • 规则一:--exclude "*test*"

    该规则的含义:排除所有文件名包含test的文件

先匹配--exclude规则,当规则匹配到--exclude "*test*"时,因为file5.txt不包含test,所以未被排除,则匹配的最终结果为file5.txt符合条件。

  • 规则二:--exclude "*file*"

    该规则的含义:排除所有文件名包含file的文件

先匹配--exclude规则,当规则匹配到--exclude "*file*"时,因为file5.txt包含file,所以被排除,则匹配的最终结果为file5.txt不符合条件。

  • 规则三:--include "*test*"

    该规则的含义:选中所有文件名包含test的文件

先匹配--exclude规则,发现无--exclude规则,再匹配--include规则,当规则匹配到--include "*test*"时,因为file5.txt不包含test,所以未被选中,则匹配的最终结果为file5.txt不符合条件。

  • 规则四:--include "*file*"

    该规则的含义:选中所有文件名包含file的文件

先匹配--exclude规则,发现无--exclude规则,再匹配--include规则,当规则匹配到--include "*file*"时,因为file5.txt包含file,所以被选中,则匹配的最终结果为file5.txt符合条件。

2. 多规则匹配

  • 规则一:--include "*.txt" --exclude "*test*"

    该规则的含义:排除所有文件名包含test的文件后,选中文件结尾是.txt的文件

先匹配--exclude规则,当规则匹配到--exclude "*test*"时,因为file5.txt不包含test,所以未被排除;再匹配--include规则,当规则匹配到--include "*.txt"时,因为file5.txt包含.txt,所以被选中,则匹配的最终结果为file5.txt符合条件。

  • 规则二:--include "*.txt" --exclude "*file*"

    该规则的含义:排除所有文件名包含file的文件后,选中文件结尾是.txt的文件

先匹配--exclude规则,当规则匹配到--exclude "*file*"时,因为file5.txt包含file,所以被排除,则匹配的最终结果为file5.txt不符合条件。

  • 规则三:--include "*.txt" --exclude "*test*" --include "*abc*" --exclude "*.png"

    该规则的含义:排除所有文件名包含test或后缀是.png的文件后,选中文件结尾是.txt或包含abc的文件

先匹配--exclude规则,当规则匹配到--exclude "*test*"时,因为file5.txt不包含test,所以未被排除,当规则匹配到--exclude "*.png"时,因为file5.txt不包含.png,所以未被排除;再匹配--include规则,当规则匹配到--include "*.txt"时,因为file5.txt包含.txt,所以被选中,则匹配的最终结果为file5.txt符合条件。

  • 规则四:--include "*.txt" --exclude "*file*" --include "*abc*" --exclude "*.png"

    该规则的含义:排除所有文件名包含file或后缀是.png的文件后,选中文件结尾是.txt或包含abc的文件

先匹配--exclude规则,当规则匹配到--exclude "*file*"时,因为file5.txt包含file,所以被排除,则匹配的最终结果为file5.txt不符合条件。

文件名、路径名匹配示例

默认情况下,KS3Util的过滤规则匹配的是文件名,填写--path-matching选项后,KS3Util的过滤规则匹配的是文件路径。

在使用路径匹配时,推荐使用正则模式(--enable-regex)。

1. 文件名匹配

上传时,如有本地文件的绝对路径为:/root/files/upload/abc.txt

  • 规则一:--include ".*\.txt" --enable-regex

    该规则的含义:选中文件名结尾是.txt的文件

因为abc.txt包含.txt,所以被选中,则匹配的最终结果为abc.txt符合条件。

  • 规则二:--include ".*upload.*" --enable-regex

    该规则的含义:选中文件名包含upload的文件

因为abc.txt不包含upload,所以未被选中,则匹配的最终结果为abc.txt不符合条件。

下载时,如有KS3中文件的Key为:files/download/abc.txt

  • 规则一:--include ".*\.txt" --enable-regex

    该规则的含义:选中文件名结尾是.txt的文件

因为abc.txt包含.txt,所以被选中,则匹配的最终结果为abc.txt符合条件。

  • 规则二:--include ".*download.*" --enable-regex

    该规则的含义:选中文件名包含download的文件

因为abc.txt不包含download,所以未被选中,则匹配的最终结果为abc.txt不符合条件。

2. 路径匹配(--path-matching)

上传时,如有本地文件的绝对路径为:/root/files/upload/abc.txt

  • 规则一:--include ".*\.txt" --path-matching --enable-regex

    该规则的含义:选中文件路径结尾是.txt的文件

因为/root/files/upload/abc.txt包含.txt,所以被选中,则匹配的最终结果为abc.txt符合条件。

  • 规则二:--include ".*upload.*" --path-matching --enable-regex

    该规则的含义:选中文件路径包含upload的文件

因为/root/files/upload/abc.txt包含upload,所以被选中,则匹配的最终结果为abc.txt符合条件。

下载时,如有KS3中文件的Key为:files/download/abc.txt

  • 规则一:--include ".*\.txt" --path-matching --enable-regex

    该规则的含义:选中文件路径结尾是.txt的文件

因为files/download/abc.txt包含.txt,所以被选中,则匹配的最终结果为abc.txt符合条件。

  • 规则二:--include ".*download.*" --path-matching --enable-regex

    该规则的含义:选中文件路径包含download的文件

因为files/download/abc.txt包含download,所以被选中,则匹配的最终结果为abc.txt符合条件。

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈