预设浏览器高级过滤

在视口选项中,有一个简单的多行编辑字段,标记为Filter String。这使高级用户可以通过测试标记和元数据来限制“预设浏览器”中显示的内容。该过滤器会影响缩略图浏览器或平面列表中当前可见的文件,并且可以设置为仅过滤文件,或同时过滤文件和目录。

过滤器的基本输入格式为:

(NOT class:attribute(options)={value}..{value}) COMBINER

您可以随意使用空格分隔的任意多个。

Parentheses -您可以选择将多个测试括在括号中以进行分组。COMBINER确定相对于下一个测试如何处理此测试。

NOT -可选的NOT前缀会反转以下测试。

class -类是用户或共享的“固有”元数据之一,并确定从何处提取属性。

attribute -要测试的属性的内部名称。属性区分大小写,并且相当随意(除了遵守内部字符串命名规则的事实外)。

内在类支持以下特殊属性:

path :(文件路径)文件的完整本地路径。

name :(字符串)路径的名称部分,包括扩展名。

ext :(字符串)文件的扩展名(如果有)。

size :(内存)磁盘上的文件大小。目录当前返回的大小为0。

isFile :(布尔值)如果这是一个文件,则为true;否则为false。如果这是目录,则返回false。

numFiles :(整数)目录中可识别的文件总数。

numDirs :(整数)目录中子目录的总数。

numChildren :(整数)目录中可识别的文件和子目录的总数。

modTime :(字符串)此文件或目录的最后修改或创建时间(以较新的为准)。

普通用户和共享标记的一些示例包括:

isFavorite :(布尔值)如果将此条目标记为收藏夹,则为true。

starRating :(整数)0-5,表示用户分配的星级。

标签:(字符串)用户提供的用于标记目的的任意字符串。

author :(字符串)文件的作者。

版权:(字符串)版权信息。

desc :(字符串)文件说明。

标记是用户可扩展的,并且可以包含任意属性。

(选项)

这些是可选的,但如果存在,则必须在括号中并遵循属性名称。可用选项取决于数据类型。选项列表以空格分隔。对于字符串:

子字符串:在属性中搜索测试值作为子字符串。这是默认值。

pattern:进行模式匹配。

case:使比较区分大小写。默认值不区分大小写。

精确:字符串必须与测试值完全匹配。可以与大小写一起使用以执行区分大小写的比较。

操作员

运算符是标准的数学测试,尽管其行为因数据类型而有所不同。

=(等于);该值必须完全匹配。与字符串一起使用时,这会进行模式匹配,子字符串搜索或完全匹配,具体取决于设置的选项。

<(小于),>(大于),<=(小于或等于),> =(大于或等于);基本逻辑测试。

在数字类型上,这可以按预期工作。

在浮点数上,这与很小的阈值(ε)进行比较,因为出于技术原因您不能直接比较浮点数。

在字符串上,这会执行C函数strcmp(或区分大小写的版本,取决于是否设置了case选项)并测试结果。在将modTime属性与另一个时间进行比较以查找比该时间更早或更旧的文件时,这非常有用。

如果未提供运算符,则只要文件或目录上存在class:attribute,过滤器就会匹配。

如果文件或目录上不存在该属性,并且存在运算符(这意味着您不只是在进行存在性测试),则该测试将被视为失败,而与要测试的值无关。

要测试的值。必须使用以下方式之一包装它:

花括号{...}:该值字符串被解析为“原始”格式的值。

方括号:该值字符串被解析为“漂亮”的格式值。

小于/大于括号<...>:字符串形式为class:attribute path,表示要测试的另一个属性。该路径是可选的。如果存在,它是目录高速缓存中另一个文件或目录的完整本地路径;如果省略,则从当前条目中拉出该属性。

如果需要在搜索字符串中包含花括号,则可以将这些花括号嵌套。如果该字符串中的花括号不平衡,则必须使用` (反引号)。如果您必须搜索` (反引号),则需要与另一个转义符一起转义` (反引号)。例如, ``(两个反引号并排)。

针对不存在的属性进行测试

还需要注意的是,只有在属性实际存在于项目上时,才进行值测试。这意味着,如果您想检查所有具有isFavorite属性设置为false,您可以执行以下操作:

用户:isFavorite = {false}

它只会匹配先前被标记为“收藏夹”然后再次关闭的条目(因为将其关闭只是将属性重置为false;它没有将其从标记中删除)。因此,您需要为过滤器执行以下操作:

user:isFavorite = {false}或非user:isFavorite

如果isFavorite属性为false,或者isFavorite属性不存在。

范围测试

.. (两个句点)语法可用于在上述值和第二个值之间进行范围测试。后面的第二个值.. 遵循与第一个值相同的格式规则。这仅适用于= (相等)运算符,因为它与其他任何运算符都没有意义。

比较数字时,来自class:attribute必须大于或等于第一个值且小于或等于第二个值。

比较字符串时,它们都针对class:attribute的价值strcmp( )。(对于不区分大小写的版本,如果设置了大小写,则将忽略其他字符串选项。)

对于那些不知道的人strcmp()返回一个字符串是“小于”(通常被认为是“先于排序顺序”)还是“大于”另一个字符串。的class:attribute值字符串必须测试大于或等于第一个值字符串,并且小于或等于第二个测试字符串。当使用intrinsic:modTime属性,可让您查看是否在两个时间范围之间创建了文件。

合路器

执行多项测试时, ANDOR组合器可用于确定它们是否必须全部匹配或仅某些必须匹配。AND是可选的,如果没有提供,则被推断。与括号结合使用时,此功能最为有用。

例如,如果在用户标记中设置了“收藏夹”标志,或者如果用户标记星际评级不存在,或者确实存在且小于1,则此匹配。

user:isFavorite = {true}并且(非user:starRating或user:starRating <{1})