SA118中文翻译 5 Solaris8入门教材

第五章 搜索文件和文本
翻译:hfzheng
电子邮件:hfzheng@sohu.com
转载请保留此信息!


使用find命令定位文件
使用find命令可以定位目录树中的文件,使用该命令可以基于指定的规则来定位文件,例如指定文件名称、大小、所有者、修改时间、类型 。
find命令递归搜索路径列表中的目录树查找满足指定规则的文件 。当那些满足条件的文件定位后,在屏幕上将显示每个文件的路径 。
命令格式
find pathnames expressions actions
命令行中的第一个参数为搜索开始的路径名称,可以使用绝对路径或者相对路径方式指定 。其他参数指定搜索规则以及一旦搜索到文件到所要采取的动作 。以下三个部分分别说明了可以使用在find命令中的参数、表达式和动作 。
参数定义
pathname搜索开始的目录路径
expression一个或者多个选项指定的搜索规则,指定多个搜索规则,find命令将执行and操作,也就是说,所有列出的搜索规则都必须满足 。
Find命令中可以使用的expressions
-name filename搜索匹配指定文件名的文件,元字符如果放在引号里面也可以使用
-size [ |-]n搜索文件大小大于( n)或者小于(-n)的文件,n代表512字节块
-atime [ |-]n搜索访问时间超过( n)或者不足(-n)天的文件
-mtime [ |-]n搜索修改时间超过( n)或者不足(-n)天的文件
-user loginID搜索属于loginID名称所有的文件
-type指定搜索的文件类型,如d目录,f文件
-perm搜索具有指定访问许可的文件
-print指示find打印当前路径到终端屏幕,这是默认设置
find命令中可以使用的动作
-exec command {} ;自动对每个找到的文件执行指定的命令,必须包含字符串{} ;用来告诉find命令对于每个由搜索规则指定的文件执行命令,在之前必须要一个空格;
-ok command {} ;exec的交互方式,对find命令的结果执行命令时要求输入确认;
下面举例说明find命令的功能:
$ find / -name core
$ find ~ -name core -exec rm {} ;
$ find . –mtime90
$ find ~ -size57
$ find /usr –name ‘*tif"
比较文件之间的差异
使用cmp命令比较文本之间的差异
使用cmp命令轻松确定可以文本之间的差异 。只有当文本文件不同时cmp命令才打印结果,没有任何结果显示,表明文件完全相同 。
cmp命令对每个文件一个字节一个字节比较,如果文件之间有不同,cmp命令打印出文件之间不同的字节数和行数,然后停在第一个不同行上 。该命令可以比较二进制文件和ASCII文件 。
命令格式
cmp filename1 filename2
$ cmp fruit fruit2
fruit fruit2 differ: char 27, line 5
输出说明了两个文件第一次出现不同的位置,在上面的示例中在第5行的第27个字符 。
使用diff命令比较文本之间的差异
diff是另外一个用于比较文本之间差异的命令 。该命令的结果是一行一行显示两个文本文件之间的不同,为你编辑一个文件以使得该文件和另外一个文件相同提供指导 。
命令格式
diff –option filename1 filename2
下面列出可以在diff中使用的选项:
-i忽略大小写,例如A等于a
-c产生差异列表 。结果以文件名称和创建日期开始,接下来就是一组星号,接着显示file1文件的行数,file1中的实际行,与file2不同的行前面有(-)标签 。接下来就 是file2文件的行数,file2中的实际行,与file1不同的行前面有(+)标签 。
使用带-c选项的diff命令
当使用带-c选项的diff命令时,结果分三个部分显示 。
第一部分显示要比较的文件名称、创建日期,然后跟一串星号
第二部分为file1文件的显示,显示file1文件的行数,file1中的实际行,与file2不同的行前面有(-)标签 。

推荐阅读