Linux入职基础-5.7_文件比较查找(命令实例)

文件比较查找(命令实例)

一:命令列表

cmp   比较两个文件是否有差异

comm  比较两个已排过序的文件

diff    比较文件的差异

cksum  检查文件的CRC是否正确

file    辨识文件类型

find   查找文件命令

which  查找文件命令

locate  搜寻系统内是否存在指定的文件

whereis  定位文件位置命令

paste 合并文件列命令

split  分割文本文件命令(按大小分割)

csplit 分割文本文件命令(按行分割)

二、实例解说

名称:cmp

功能:比较两个文件是否有差异

语法:cmp [-clsv][-i <字符数目>][第一个文件][第二个文件]

范例

假设当前目录下有一f1.aa文件如下:

#include<stdio.h>

int main(int argc,char*argv[]){

int a=3,b=4;

printf(“a+b=”,a+b);

return 0;

}

文件f2.aa的内容如下:

#include<stdio.h>

int main(int argc,char*argv[]){

int a=6,b=10;

printf(“a+b=”,a+b);

return 0;

}

cmp f1.aa f2.aa 比较两个文件是否相同,如果文件相同,则不显示消息

cmp  –l  f1.aa  f2.aa  #比较两个文件是否相同,并显示不同点的详细信息

名称:comm

功能:比较文件

语法:comm [-123] [第1个文件][第2个文件]

范例:

comm -3  f1.aa  f2.aa  #比较两个文件的内容,只显示在两个文件中共同存在的行

名称:diff

功能:比较文件的差异

语法:diff [选项] file1 file2

范例

[root@localhost etc_bak]# cp yp.conf  yp.conf.bak

[root@localhost etc_bak]# diff yp.confyp.conf.bak

名称:cksum

功能:检查文件的CRC是否正确,

语法:cksum [file..]

范例:

[root@localhost ~]# mkdir cksum

[root@localhost ~]# cksum ./etc_bak/* >./cksum/etc.cksum  ##通过将一个目录或文件的校验和与它以前的校验和相比较,就能判断该文件是否被改动过。

名称:file

功能:辨识文件类型

语法:file [-beLvz][-f <名称文件>][-m <魔法数字文件>...][文件或目录...]

范例

[root@localhost etc_bak]# file yp.conf 

yp.conf: ASCII English text              ##辨识为文本文件

file /bin/bash     ##辨识为ELF 32-bit LSBexecutable

名称:find

功能:查找文件命令

语法:find [搜索目录…] [参数] [表达式] [动作选项]

范例

find /etc -name ftp *  #查看ftp服务器配置信息的具体位置

find . -name "*.c"   #将目前目录及其子目录下所有文件名是 c 的文件列出来。

find . -ftype f   #目前目录其其下子目录中所有一般文件列出

find /dev -type c  #将/dev目录及其子目录下;类型是字符设备的文件列出

find ./ -type f -size 0 -exec ls -l {}  \;  #为了查找文件长度为0的普通文件,并列出完整路径

find ./ -size  1000c #c表示要查找的文件的大小是以字节为单位,单位可以M或G。

find /var/log -type f –mtime +7  #查找/ v a r / l o g 目录中更改时间在7日以前的普通文件

find ./ -size  +1000c -and -2000c  #查找介于1 000字节和2 000字节之间的文件

find ./ -amin -10  #查找当前目录下最后10分钟访问的文件

find./ -atime  -2  #查找当前目录下最后48小时访问的文件。

find . -ctime -20  #将目前目录及其子目录下所有最近 20 分钟内更新过的档案列出

find / -mmin -5  #查找当前目录下最后5分钟里修改过的文件

find / -mtime -5 –print  #在系统根目录下查找更改时间在5日以内的文件

find ./ -mtime -1 #查找当前目录下最后24小时里修改过的文件

find ./ -empty  #查找当前目录下为空的文件或者文件夹

find ./ -group user1  #查找当前目录下属组为user1的文件

find ./ -user  user1 #查找当前目录下属主是user1这个用户的文件

find ./ -nouser  #查找当前目录下属于作废用户的文件

find ./ -perm 664  #查找当前目录下允许属主/属组可读写的,其他用户只可读的文件

find ./ -size +1000c -and -mtime +3 -and-name abc* #查找到同时符合3个条件的文件

find ./ -size +1000c -or -mtime +3 #查找到符合任何一个条件的文件

find ./ -! \(-size +1000c -or -mtime +3 \)#查找非大于1 000字和最近48小时修改的文件,“\(”与其它字符之间注意空格

find ./ -exec  file {}  \;  #查看当前目录下所有文件的类型

名称:which

功能:在环境变量$PATH设置的目录里查找符合条件的文件

语法:which [文件...]

范例

which gcc g++  #看系统中是否安装c/c++编译器

我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:

which 查看可执行文件的位置。

whereis 查看文件的位置。

locate  配合数据库查看文件位置。

find  实际搜寻硬盘查询文件名称。

##查找文件、显示命令路径

which lsmod

名称:locate

功能:搜寻系统内是否存在指定的文件

语法:locate [-q] [-d ] [--database= ]

范例

[root@localhost cmd]# updatedb

locate httpd 查找相关字httpd

locate -n 10 httpd : 寻找所有叫 httpd 的档案,但最多只显示 10个

locate ftp | grep etc | grep conf #查看ftp服务器的配置文件

名称:whereis

功能:定位文件位置命令

语法:whereis [参数] [文件…]

范例

whereis -b ls cp  #查看系统是否有ls、cp命令

whereis -m -u  *  #在当前目录下,查找没有文档说明的所有文件

名称:grep

功能:搜索文件中的字符串

语法:grep [参数] [字符串或正则表达式][文件名…]

范例

ls -l | grep ^d    #只显示当前目录下的目录文件

ls -l | grep ^[^d]  #显示当前目录下的除目录文件以为的文件

who | grep –v root  #显示除根用户外其他登陆本机的用户

grep -n “yp”  yp.conf #查询目标文件中特定的字符串,显示行号

grep “ 13[0-2]” address  #搜索查询结构化的通讯簿(address), 空格+13[0-2]开始的单个字段的用户信息,常用于结构化文件的查询例子。

grep -in  ^s  address  #查询所有以s开头用户的联系方式

注意:grep命令不能同时指定两个固定的字符串,所有下面我们再介绍egrep命令

名称:egrep

功能:实现多个字符串匹配搜索

语法:egrep [参数] [字符串或正则表达式] [文件名…]

范例

egrep “sxx|lhw” address   #搜索address中simon和wxp的用户的信息

名称:paste

功能:队列方式合并文件列命令

语法:paste [-s][-d ][--help][--version][文件...]

范例

文件: pas1

ID897

ID666

ID982

文件: pas2

P.Jones

S.Round

L.Clip

[root@localhost cmd]# paste pas1 pas2 >test2

[root@localhost cmd]# cat test2

D897   P.Jones

ID666  S.Round

ID982  L.Clip

ls /etc | paste -d": " - - -以三列格式显示输出:

名称:split

功能:分割文件命令(按大小分割)

语法:split [-n] file [name]

范例

##将文件myfile依次截断到名为ffaa,ffab,ffac.....的文件中,每一文件的长度为默认10行

split -10 myfile ff

split -d -b 512 FILE prefix  #分解后大小为 512byte,文件名前缀为prefix 后缀为 00、01、02 ......99,若 -b 改为 -k 为Kbyte,-m 为Mbyte。

名称:csplit

功能:分割文件命令(按行分割)

语法:csplit [-kqsz] [-b<输出格式>] [-f<输出前缀字符串>] [-n<输出文件名位数>] [文件] [模板样式..]

范例

#把文件 passwd 分解,分解后大小为 15 行,文件名前缀为 pass后缀为 00、01、02 ......99,而文件个数不多于100个。

csplit -k -f pass passwd 15 {99} 

csplit -f pass  passwd 20   #以20行为分界点切割成2份

csplit -k -f pass passwd 10  #以10行为分界, 文件名的位数为3


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值