作为一个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 �Cmtime -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-eaaa-ebbbba.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-C5'myword'pdo.PHP查找包含myword及其上下5行内容 grep-A5'myword'pdo.PHP包含myword的行和它下面的5行 grep-B5'myword'pdo.PHP包含myword的行和它上面的5行