2. 模式:搜索,提取和标记
Mutt中的许多命令允许你使用模式来匹配邮件(limit
,tag-pattern
,delete-pattern
,等等)。表4.4 “模式修饰符”给出了几种选择邮件的方式。
表4.4.模式修饰符
模式修饰符 | 描述 |
---|---|
~A | 所有邮件 |
~b EXPR | 正文中匹配EXPR的邮件 |
=b STRING | 正文包含STRING的邮件。如果启用了IMAP,将在服务器上执行搜寻STRING的工作,而不是下载每封邮件并在本地搜索。 |
~B EXPR | 在整个邮件中匹配EXPR的邮件 |
~c EXPR | “Cc:”字段匹配EXPR的邮件 |
%c GROUP | Cc给GROUP成员的邮件 |
~C EXPR | “To:”或“Cc:”字段匹配EXPR的邮件 |
%C GROUP | 发送或Cc给GROUP成员的邮件 |
~d [MIN]-[MAX] | “date-sent”匹配日期范围的邮件 |
~D | 已删除的邮件 |
~e EXPR | “Sender”字段匹配EXPR的邮件 |
%e GROUP | “Sender”字段包含Group成员的邮件 |
~E | 过期的邮件 |
~F | 标记为重要的邮件 |
~f EXPR | 来自EXPR的邮件 |
%F GROUP | 来自GROUP成员的邮件 |
~g | 使用密钥签名的邮件 |
~G | 使用密钥加密的邮件 |
~h EXPR | 邮件头匹配EXPR的邮件 |
~H EXPR | spam attribute匹配EXPR的邮件 |
~i EXPR | “Message-ID”字段匹配EXPR的邮件 |
~k | 包含PGP密钥的邮件 |
~L EXPR | 由EXPR发出或来自EXPR的邮件 |
%L GROUP | 由GROUP成员发出或来自他们的邮件 |
~l | 寄给已知邮件列表的邮件 |
~m [MIN]-[MAX] | 从MIN到MAX的邮件*) |
~n [MIN]-[MAX] | 评分在MIN到MAX范围内的邮件*) |
~N | 新邮件 |
~O | 旧邮件 |
~p | 发给你(参考后备地址)的邮件 |
~P | 由你(参考后备地址)发出的邮件 |
~Q | 已回复的邮件 |
~r [MIN]-[MAX] | “date-received”匹配日期范围的邮件 |
~R | 已读的邮件 |
~s EXPR | Subject”字段匹配EXPR“的邮件。 |
~S | superseded messages |
~t EXPR | 发给EXPR的邮件 |
~T | 被标记的邮件 |
~u | 寄给己订阅的邮件列表的邮件 |
~U | 未读邮件 |
~v | 折叠thread之中的邮件 |
~V | 已验证的邮件 |
~x EXPR | “References”字段匹配EXPR的邮件 |
~X [MIN]-[MAX] | 包含MIN到MAX个附件的邮件*) |
~y EXPR | “X-Label”字段匹配EXPR的邮件 |
~z [MIN]-[MAX] | 大小介于MIN到MAX之间的邮件*) |
~= | 重复的邮件(见$duplicate_threads) |
~$ | 未索引的邮件 (需要以thread方式排列) |
~ (PATTERN) | thread中所包含匹配PATTERN的邮件,例如,所有thread包含的来自你的邮件:~(~P) |
=b *.*
”表示所有包含基本字符串“*.*“的邮件。简单字符串的匹配不如正则表达式强大,但它的效率更高。尤其是对IMAP文件夹,因为搜寻匹配字符串的工作可以在服务器上执行,而不需要获取每封邮件。特别地,IMAP对待“=h
”:它的格式必须是“header: substring”,不会部份地匹配邮件头的字段名。如果你只想要简单地找出包含特定邮件头的邮件,而不关心其具体的值,那么可以省略“substring”。*)也可以使用其它的一些形式,如“<[MAX]“,”>[MIN]”,“[MIN]-”和“-[MAX]”。
2.1.模式修饰符
注意
匹配地址列表的模式(尤其是c,C,p,P和t),如果整个地址列表中有一个地址匹配,那么这个模式就会匹配这封邮件。如果你想保证地址列表中的每一项都匹配的话,你需要在给模式加上前缀“^”。下面这个例子匹配所有只包含来自德国的收件人的邮件。^~C \.de$
2.2.简单模式
第一种是通过检查查询语句是否属于表4.5 “简单搜索关键词”所列出的关键字(大小写不敏感):如果是的话,Mutt使用关键字所对应的模式修饰符代替关键字。如果你要查询的内容和某个关键字有冲 突,你需要把它变成一个正则表达式,以避免和关键字一致。例如,如果你想查询所有匹配“flag”的邮件(使用$simple_search),而不是要查询被标记为重要的邮件,那么就要写成“
[f]lag
”。
表4.5.简单搜索关键词
关键字 | 模式修饰符 |
---|---|
all | ~A |
. | ~A |
^ | ~A |
del | ~D |
flag | ~F |
new | ~N |
old | ~O |
repl | ~Q |
read | ~R |
tag | ~T |
unread | ~U |
2.3.组合模式
~t mutt ~f elkins将选择收件人列表包含“mutt”的,并且在“From:”字段包含“elkins”的邮件。
Mutt同样可以通过以下操作符达到更多的模式组合搜索:
- ! -- 逻辑非操作符
- | -- 逻辑或操作符
- () -- 分组操作符
例4.1.模式匹配中使用布尔操作符
!(~t mutt|~c mutt) ~f elkins
'~s "^Junk +From +Me$" ~f ("Jim +Somebody"|"Ed +SomeoneElse")'
注意
如果正则表达式中包含括号,或管道符("|"),你必须将表达式放到双引号或单引号内,因为这些字符也被用来分隔不同的模式。例如:~f "me@(mutt\.org|cs\.hmc\.edu)"
。2.4.按日期搜索
绝对的:日期的格式必须是日/月/年(月份和年份是可选的,默认为当前的月份和年份) 。例子,一个有效的日期范围是:
Limit to messages matching: ~d 20/1/95-31/10如果你省略了开始日期,仅仅指定“-DD/MM/YY”,那么在指定日期之前的邮件将被选中。如果您省略了结束日期,指定的是“DD/MM/YY-”,那么所有在指定日期之后的邮件将被选中。如果你只指定了一个日期,而没有破折号(“-”),那么只有在指定日期发送的邮件将被选中。
偏差:您可以给绝对日期加上一个偏差值。偏差是由符号(+或-),后跟数字,最后加上表4.6所列出的时间单位构成的。你可以用“*”代替“+”或者“-”,这相当于同时使用了“+”或者“-”。
表4.6.日期单位
单位 | 描述 |
---|---|
y | 年 |
m | 月 |
w | 周 |
d | 天 |
Limit to messages matching: ~d 15/1/2001*2w相对的:这种类型相对于当前的日期,可以被指定为:
- >offset(“offset单位”时间以前的邮件)
(“offset单位”时间之内的邮件) - =offset(“offset单位"时间当天的邮件)
例如:选择1个月之内的邮件,你可以使用
Limit to messages matching: ~d <1m
注意
使用相对搜索时都是相对去本地时区,并非index上显示的日期,除非你将格式%[...]
加入了$index_format变量。
No comments:
Post a Comment