1、界面概述
PNFinder界面如下图1所示主要分成Title, Menu, Button, PNTree, PNPreview, Result和Status这几个区域。Title区域用来显示当前查看的文件全路径。Menu区域有File, Edit, View, Finder, Tool和Help菜单,File菜单用来选择搜索目录的根节点,打开PNTree和PNEdit以及文件的保存和界面退出,Edit菜单可以对打开的文件做一些简单的编辑,View菜单用来设置文件的颜色/字体/参数/语法,Finder菜单用来设置/清除/导出/搜索/替换/跳转等操作,Tool菜单用来打开查看系统信息(System Information)、文件加解密(Encrypt/Decrypt)、文件分解和合并(Split/Join)以及文件列表打印(Directory Print)这几个小工具,Help菜单用来打开用户手册、查看版本信息。Button区域有File, Edit, Search, Finder, Review, Tool和Help按钮,其功能和菜单栏中对应的类似。PNTree区域显示当前搜索的目录结构。PNPreview区域显示在当前目录下查看的文件内容。Result区域显示当前搜索的结果列表。Status区域主要显示当前目录结构中查看的文件状态信息。
图1 PNFinder窗口各区域
在PNFinder界面菜单栏中Finder项下拉菜单如下图2所示,有Setting, Clear, Export, Start, Replace All, Goto Select和Replace Select这几项。Setting项点开会打开搜索和替换的设置界面;Clear项点击会将当前搜索结果从结果列表中清除掉;Export项点开会将当前搜索结果保存到一个文件中;Start项点击会根据设置的搜索条件直接开始搜索;Replace All项点击会根据设置的搜索和替换条件将全部匹配的项做替换;Goto Select项点击会根据搜索结果列表中选择的项跳转到对应的文件在目录树上展开到该节点并在预览的界面中打开该文件且光标跳至该项的行首;Replace Select项点击会根据设置的搜索和替换条件将在搜索结果列表中选择的项做替换。
图2 PNFinder搜索控制菜单
在PNFinder界面按钮中Finder和Review项如下图3所示,按钮点击打开搜索和替换设置界面;按钮点击将当前搜索结果从结果列表中清除掉;按钮点击将当前搜索结果保存到一个文件中;按钮点击根据设置的搜索条件直接开始搜索;按钮点击根据设置的搜索和替换条件开始将全部匹配的项做替换;输入框用于输入和显示当前查看的搜索项;按钮点击跳转到输入的项所在的文件在目录树上展开到该节点并在预览的界面中打开该文件且光标跳至该项的行首;按钮点击根据设置的搜索和替换条件将输入的项做替换;
图3 PNFinder搜索控制按钮
在PNFinder界面结果区域中鼠标右键会弹出菜单如下图2所示,有Goto Select, Replace Select, Export, Full Path和Remove Full Path这几项。Goto Select项点击会根据搜索结果列表中选择的项跳转到对应的文件在目录树上展开到该节点并在预览的界面中打开该文件且光标跳至该项的行首;Replace Select项点击会根据设置的搜索和替换条件将在搜索结果列表中选择的项做替换;Export项点开会将当前搜索结果保存到一个文件中;Full Path项点击会将结果列表中的Directory列文件名显示全路径;Remove Full Path项点击会将结果列表中的Directory列文件名仅显示文件名;
图4 PNFinder搜索查看菜单
2、多模式可配置的文件搜索
对于文件的搜索和替换有多种配置的方式如下图5所示,其中”Expression”区域用于设置搜索和替换的关键字和表达式以及搜索这些关键字和表达式的方式。”Filter”区域用于设置搜索的文件和文件夹类型,文件名关键字过滤,目录创建者,目录访问权限,目录创建时间以及目录的存储大小。”Select”区域有”Scope”和”Customized”这两个模式用于设置搜索的目录范围。
图5 PNFinder搜索和替换设置窗口
2.1、搜索表达式
在”Expression”区域中用于设置搜索有”Normal”和”Regex”这两种模式。在”Normal”模式中有”Ignore Case”和”Whole Word”这两个勾选项。在”Regex”模式中有”I”, ”S”和”R”这三个勾选项。
Normal模式缺省,如下图6所示是一个在”Normal”模式缺省下做的一个搜索例子,在该例子中设置了对单个文件”test_expression.tcl”做关键字为”set”的搜索,共找到有5个匹配项,分别为第一行的”set”,第二行的”set$”,第三行的”setting”,第四行的”set.xy”以及第六行的”-set]”。
图6 PNFinder搜索表达式设置示例1
Normal模式忽略大小写,如下图7所示是一个在”Normal”模式选择了”Ignore Case”忽略大小写的情况下做的一个搜索例子,在该例子中设置了对单个文件”test_expression.tcl”做关键字为”set”的搜索,共找到有6个匹配项,分别为第一行的”set”,第二行的”set$”,第三行的”setting”,第四行的”set.xy” ,第五行的”SET”以及第六行的”-set]”。这里选择了忽略大小写,因此第五行大写的”SET”也被匹配到了。
图7 PNFinder搜索表达式设置示例2
Normal模式完整字,如下图8所示是一个在”Normal”模式缺省下选择了”Whole Word”区分完整字的情况下做的一个搜索例子,在该例子中设置了对单个文件”test_expression.tcl”做关键字为”set”的搜索,共找到有4个匹配项,分别为第一行的”set”,第二行的”set$”,第四行的”set.xy”以及第六行的”-set]”。这里选择了区分完整字,因此第三行的”setting”非完整字被去除掉了。
图8 PNFinder搜索表达式设置示例3
Regex模式点通配,如下图9所示是一个在”Regex”模式下选择了”S”点通配做的一个搜索例子,在该例子中设置了对单个文件”test_expression.tcl”做关键字为”set.”的搜索,共找到有4个匹配项,分别为第二行的”set$”,第三行的”setting”,第四行的”set.xy”以及第六行的”-set]”。这里选择了点通配,因此在”set”后面的所有字符都能够被匹配到。
图9 PNFinder搜索表达式设置示例4
Regex模式字符区分,如下图10所示是一个在”Regex”模式下选择了”R”字符区分做的一个搜索例子,在该例子中设置了对单个文件”test_expression.tcl”做关键字为”set.”的搜索,共找到有1个匹配项,即第四行的”set.xy”。这里选择了字符区分,因此在”set”后面的只有对应是”.”字符才能够被匹配到。
图10 PNFinder搜索表达式设置示例5
2.2、文件属性过滤
在”Filter”区域中用于设置搜索有”File Only”, ”Folder Only”和”File Folder”这三种模式,其分别用于搜索对象的控制为纯文件的搜索,纯文件夹的搜索以及文件和文件夹一起搜索。在属性过滤时有”Name”, ”Owner”, ”Access”, ”Time”和”Size”这五个勾选项。
文件名过滤,如下图11所示是一个勾选”Name”做文件名过滤的一个搜索例子,在该例子中设置了对目录”/home”下全层次,文件名过滤”*.tcl”即通配所有文件名结尾为”.tcl”的文件(文件名输入框为空白时则匹配所有文件),关键字为”set”的搜索,共找到有4878个匹配项。
图11 PNFinder搜索文件属性过滤设置示例1
文件创建者过滤,如下图12所示勾选了”Name”和”Owner”做文件名和创建者过滤的一个搜索例子,在该例子中设置了对目录”/home”下全层次,文件名过滤”*.tcl”即通配所有文件名结尾为”.tcl”的文件以及创建者为”root”的文件,关键字为”set”的搜索,共找到有4727个匹配项。这里勾选了创建者过滤,因此在同一个目录下相同文件名和相同关键字的搜索会少掉一部分不属于该”root”创建者的文件。
图12 PNFinder搜索文件属性过滤设置示例2
文件访问权限过滤,如下图13所示勾选了”Name”和”Access”做文件名和访问权限过滤的一个搜索例子,在该例子中设置了对目录”/home”下全层次,文件名过滤”*.tcl”即通配所有文件名结尾为”.tcl”的文件以及访问权限为”rw”的文件,关键字为”set”的搜索,共找到有4628个匹配项。这里勾选了访问权限过滤,因此在同一个目录下相同文件名和相同关键字的搜索会少掉一部分不属于”rw”访问权限的文件。
图13 PNFinder搜索文件属性过滤设置示例3
文件时间过滤,如下图14所示勾选了”Name”和”Time”做文件名和时间过滤的一个搜索例子,在该例子中设置了对目录”/home”下全层次,文件名过滤”*.tcl”即通配所有文件名结尾为”.tcl”的文件以及时间为”2020-01-01”至”2020-12-31”的文件,关键字为”set”的搜索,共找到有998个匹配项。这里勾选了时间过滤,因此在同一个目录下相同文件名和相同关键字的搜索会少掉一部分不属于”2020-01-01”至”2020-12-31”期间的文件。
图14 PNFinder搜索文件属性过滤设置示例4
文件存储大小过滤,如下图15所示勾选了”Name”和”Size”做文件名和存储大小过滤的一个搜索例子,在该例子中设置了对目录”/home”下全层次,文件名过滤”*.tcl”即通配所有文件名结尾为”.tcl”的文件以及存储大小为”1000”至”10000”的文件,关键字为”set”的搜索,共找到有1511个匹配项。这里勾选了存储大小过滤,因此在同一个目录下相同文件名和相同关键字的搜索会少掉一部分不属于”1000”至”10000”存储大小的文件。
图15 PNFinder搜索文件属性过滤设置示例5
2.3、目录模式设置
在”Select”区域中有”Scope Mode”和”Customized Mode”这两种选择模式。在”Scope Mode”选择模式中有一个选择”Scope”目录结构的按钮,点开可以选择当前需要搜索的根目录节点,点击确认后该根目录节点会同时显示在输入框中(也可以在输入框中直接输入根目录节点),在”Scope”的层次选择时有”Level All”, ”Level 1”, ”Level 1-?”和”Level ?”这四个单选项。在”Customized Mode”选择模式中有一个选择记录搜索目录列表文件的按钮,点开可以找到对应的文件,点击确认后该文件会同时显示在输入框中(也可以在输入框中直接输入该文件的全路径),在”Customized Mode”选择模式有”Load”, ”Add”, ”Delete”和”Empty”这四个按钮。
Scope Level 1 模式,如下图16所示设置了”Scope Mode”选择模式,在该例子中设置了对目录”/home”下做”Level 1”即当前根目录节点下第1层,文件名过滤”*.tcl”即通配所有文件名结尾为”.tcl”的文件,关键字为”set”的搜索,共找到有0个匹配项,在搜索结果为0时会弹出一个告警对话框用于提示未发现匹配项。这里目录层次选择的是”Level 1”,同一个目录下相同文件名和相同关键字在当前根目录下第1层做搜索时不会对根目录节点第2层之后所有的节点再做搜索。
图16 PNFinder搜索目录模式设置示例1
Scope Level 1-? 模式,如下图17所示设置了”Scope Mode”选择模式,在该例子中设置了对目录”/home”下做”Level 1-5”即当前根目录节点下第1-5层,文件名过滤”*.tcl”即通配所有文件名结尾为”.tcl”的文件,关键字为”set”的搜索,共找到有618个匹配项。这里目录层次选择的是”Level 1-5”,同一个目录下相同文件名和相同关键字在当前根目录下第1-5层做搜索时不会对根目录节点第6层之后的节点再做搜索。
图17 PNFinder搜索目录模式设置示例2
Scope Level ? 模式,如下图18所示设置了”Scope Mode”选择模式,在该例子中设置了对目录”/home”下做”Level 8”即当前根目录节点下第8层,文件名过滤”*.tcl”即通配所有文件名结尾为”.tcl”的文件,关键字为”set”的搜索,共找到有713个匹配项。这里目录层次选择的是”Level 8”,同一个目录下相同文件名和相同关键字在当前根目录下第8层做搜索时不会对根目录节点第1-7层和第9层之后的节点再做搜索。
图18 PNFinder搜索目录模式设置示例3
Customized 模式,如下图18所示设置了”Customized Mode”选择模式,该模式选择之后对应”Filter”文件属性过滤功能会被禁止,会在对应目录列表文件中做”Expression”设置的关键字搜素。在该例子中设置了搜索目录列表文件件”/home/test/test_case/script/finder_test/finder_customized.list”,点击”Load”按钮之后会将该文件中所有合法的目录路径都加载到目录列表框中共22个目录(按钮”Add”可以对加载的目录列表做增加一条目录操作,按钮”Delete”可以对加载的目录列表做减少一条目录操作,按钮”Empty”可以对加载的目录列表做清空所有目录操作),关键字为”set”的搜索,共找到有1487个匹配项。
图19 PNFinder搜索目录模式设置示例4
3、文件搜索结果的查看
PNFinder在搜索完成之后会将其结果显示在搜索结果列表中如下图20所示,在该列表的上方对应有”Number”, “Directory”, “Line”和”Content”这四个列项。其中”Number”这一列用于显示当前搜索匹配项的编号;”Directory”这一列用于显示当前搜索匹配项所在的文件名(文件名显示有单独文件名或文件的全路径名,这可以通过图4搜索查看菜单中的”Full Path”和”Remove Full Path”项控制),以及关键字在该文件中匹配的总数和所在该文件中的编号;”Line”这一列用于显示当前项关键字在文件中匹配所在的行号,”Content”这一列用于显示当前项关键字在文件中匹配所在的行内容。在该列表右下方会显示当前搜索结果的数量,结果在列表中是按页显示的,每页最多100个搜索项,在查看时可以在”Page”中先找到对应的页号即可在结果列表中显示该页的项,按钮用于向前翻一页显示前页的结果,按钮用于向后翻一页显示后页的结果。
图20 PNFinder搜索结果查看
搜索结果跳转,对于搜索结果查看其文件中详细内容时可以在结果列表中双击该项即可将该项所在的文件在“PNTree”区域目录结构树展开并将其高亮,同时在“PNPreview”区域中打开该文件并跳至该项匹配的行首。同时“Goto”操作还可以通过图2搜索控制菜单中的“Goto Select”项,图3中搜索控制按钮中的按钮和图4搜索查看菜单中的“Goto Select”项这几个方式来实现搜索结果跳转的功能。这里“Goto”操作由于跳转显示界面只有一个,因此一次仅可以选择一个结果项做跳转。
搜索结果替换,对于搜索结果替换时可以通过图2搜索控制菜单中的“Replace Select”项将搜索匹配到的关键字在对应的文件中将其修改替换成在设置界面中“Expression”区域中“Replace”输入框中的替换内容。同时“Replace”操作还可以图3中搜索控制按钮中的按钮和图4搜索查看菜单中的“Goto Select”项这几个方式来实现搜索结果替换的功能。这里“Replace”操作不需要打开显示界面,因此一次仅可以选择多个匹配项做替换操作。
4、文件搜索结果的导出
PNFinder在搜索完成之后会还可以将其结果导出成文件如下图21和图22所示,其中图21是将搜索结果列表中“Directory”列显示单独文件名的形式导出的文件,图22是将搜索结果列表中“Directory”列显示文件的全路径名的形式导出的文件。在该文件中开头部分会记录导出时间,导出的文件全路径名以及搜索匹配项的总数。在该文件中的第8行记录了”Number”, “Directory”, “Line”和”Content”这四个列项名,第9行用间隔线将列项名和列内容做分隔,第10行至文件结尾按行分别记录每个匹配项的详细内容。
图21 PNFinder搜索结果导出示例1
图22 PNFinder搜索结果导出示例2