作为一个ITer需要竟要使用到命令行,find和grep命令了解非常必要,下面说些常用方法


find

查找文件

find  ./ -name 192.168.1.166_server_log  #根据文件名查找

find . -type f -name "*.phtml"           #根据文件后缀查找


查找目录

find / -type d -name games


根据文件权限查找  

find . -type f -perm 0777 -print #输出权限是777的文件

 find / -type f ! -perm 777 #找出所有权限不是777的文件

find / -type f -perm 0777 -print -exec chmod 644 {} \;  #把所有777权限文件改为644权限

-perm  -2   如果xxx全面是“-”表示other必须包含写权限,“+”表示其中u,g,o任何地方包含即可

find / -type f -perm -2 -o -perm -20 | xargs ls -al   查看所有other权限包含2或者group包含2权限的文件


根据文件的创建和修改时间

mtime 修改时间

ctime 创建时间

atime 访问时间

find / -mtime 50 #查找修改文件日期为50天的文件

find / -mtime +50 –mtime -100 #查找文件修改时间大于50天小于100天的文件


根据文件大小查找

 find / -size +50M -size -100M #查找文件大于50M小于100M的文件

find ./ -mmin -60   #60分钟内的

find    /home     -name tmp.txt -maxdepth    4  #列出/home内的tmp.txt 查时深度最多为3层

find -empty


查找条件逻辑关系(and|or)

-a 表示条件间的并关系

-o表示条件的或关系




find /var/www/html/ -type f -print|xargs grep -l zabbix_logo  查找指定目录含有zabbix_logo字段的文件



grep

grep -n 'word' aaa.txt #显示匹配到关键字内容行号
grep -w "word" xxxx.txt   #-w指定的字符的完整单词
grep  -e aaa -e  bbbb a.txt    #过滤“txt”里面带有aaa和bbb的行


 

grep过滤后显示正则匹配到部分

过滤出“IP:port”这样的字符串
grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}\:[0-9]{1,4}"    /tmp/ip.data >/tmp/proxy.txt

 

里面正则是这样写的

(匹配0-9的数字1~3次后面是“.)前面这段重复3次,后面继续是(匹配0-9的数字1~3次)

后面加“:”,(匹配0-9的数字1~4次)

 


grep过滤关键字的上下一定范围

grep -C 5 'myword' pdo.php   查找包含myword及其上下5行内容
grep -A 5 'myword' pdo.php   包含myword的行和它下面的5行
grep -B 5 'myword' pdo.php   包含myword的行和它上面的5行