在使⽤linux时,经常需要进⾏⽂件查找。其中查找的命令主要有find和grep。两个命令是有区的。
区别:(1)find命令是根据⽂件的属性进⾏查找,如⽂件名,⽂件⼤⼩,所有者,所属组,是否为空,访问时间,修改时间等。 (2)grep是根据⽂件的内容进⾏查找,会对⽂件的每⼀⾏按照给定的模式(patter)进⾏匹配查找。 ⼀.find命令
基本格式:find path expression 1.按照⽂件名查找
(1)find / -name httpd.conf #在根⽬录下查找⽂件httpd.conf,表⽰在整个硬盘查找 (2)find /etc -name httpd.conf #在/etc⽬录下⽂件httpd.conf
(3)find /etc -name '*srm*' #使⽤通配符*(0或者任意多个)。表⽰在/etc⽬录下查找⽂件名中含有字符串‘srm’的⽂件 (4)find . -name 'srm*' #表⽰当前⽬录下查找⽂件名开头是字符串‘srm’的⽂件 2.按照⽂件特征查找
(1)find / -amin -10 # 查找在系统中最后10分钟访问的⽂件(access time) (2)find / -atime -2 # 查找在系统中最后48⼩时访问的⽂件 (3)find / -empty # 查找在系统中为空的⽂件或者⽂件夹 (4)find / -group cat # 查找在系统中属于 group为cat的⽂件
(5)find / -mmin -5 # 查找在系统中最后5分钟⾥修改过的⽂件(modify time) (6)find / -mtime -1 #查找在系统中最后24⼩时⾥修改过的⽂件 (7)find / -user fred #查找在系统中属于fred这个⽤户的⽂件
(8)find / -size +10000c #查找出⼤于10000000字节的⽂件(c:字节,w:双字,k:KB,M:MB,G:GB) (9)find / -size -1000k #查找出⼩于1000KB的⽂件 3.使⽤混合查找⽅式查找⽂件 参数有: !,-and(-a),-or(-o)。
(1)find /tmp -size +10000c -and -mtime +2 #在/tmp⽬录下查找⼤于10000字节并在最后2分钟内修改的⽂件 (2)find / -user fred -or -user george #在/⽬录下查找⽤户是fred或者george的⽂件⽂件 (3)find /tmp ! -user panda #在/tmp⽬录中查找所有不属于panda⽤户的⽂件
⼆、grep命令
基本格式:find expression 1.主要参数
[options]主要参数:
-c:只输出匹配⾏的计数。 -i:不区分⼤⼩写
-h:查询多⽂件时不显⽰⽂件名。
-l:查询多⽂件时只输出包含匹配字符的⽂件名。 -n:显⽰匹配⾏及⾏号。
-s:不显⽰不存在或⽆匹配⽂本的错误信息。 -v:显⽰不包含匹配⽂本的所有⾏。
pattern正则表达式主要参数:
\\: 忽略正则表达式中特殊字符的原有含义。 ^:匹配正则表达式的开始⾏。 $: 匹配正则表达式的结束⾏。
\\<:从匹配正则表达 式的⾏开始。 \\>:到匹配正则表达式的⾏结束。 [ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C⼀直到Z都符合要求 。 .:所有的单个字符。
* :有字符,长度可以为0。 2.实例
(1)grep 'test' d* #显⽰所有以d开头的⽂件中包含 test的⾏
(2)grep ‘test’ aa bb cc #显⽰在aa,bb,cc⽂件中包含test的⾏
(3)grep ‘[a-z]\\{5\\}’ aa #显⽰所有包含每⾏字符串⾄少有5个连续⼩写字符的字符串的⾏
(4)grep magic /usr/src #显⽰/usr/src⽬录下的⽂件(不含⼦⽬录)包含magic的⾏ (5)grep -r magic /usr/src #显⽰/usr/src⽬录下的⽂件(包含⼦⽬录)包含magic的⾏
(6)grep -w pattern files :只匹配整个单词,⽽不是字符串的⼀部分(如匹配’magic’,⽽不是’magical’),
因篇幅问题不能全部显示,请点此查看更多更全内容