linux系统 find文件查找命令与grep文件内容查找命令
- find命令根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等
- grep根据文件的内容进行查找,会对文件的每一行按照给定的模式进行匹配查找
一.find 命令常用场景:
1.按照文件名查找
find / -name httpd.conf在根目录下查找文件httpd.conf,表示在整个硬盘查找find /home -name httpd.conf在/home目录下查找文件httpd.conffind /home -name '*server*'在/home目录下查找文件名中含有字符串server的文件,使用通配符*(0或者任意多个)find . -name 'server*'在当前目录下查找文件名开头是字符串server的文件
2.按照文件特征、属性查找
find / -amin -10查找在系统中10分钟内访问的文件(access time)find / -atime -2查找在系统中2天内访问的文件(access time)find / -mmin -5查找在系统中5分钟内修改过的文件(modify time)find / -mtime -1查找在系统中24小时内修改过的文件(modify time)- 备注:Linux系统中文件的三种时间属性
find / -size -100k查找出小于100kb的文件(c:字节,w:双字,k:KB,M:MB,G:GB)find / -size +100M查找出大于100M的文件find / -user mysql查找在系统中属于mysql这个用户的文件,一般可以再加上组合条件,缩小范围查找find / -group hadoop查找在系统中属于 group为hadoop的文件find / -empty查找在系统中为空的文件或者文件夹
3.使用混合查找方式查找文件
一般组合参数有: -and(-a),-or(-o)
find /tmp -size +10M -and -mmin -5在/tmp目录下查找大于在这里插入代码片10M并在5分钟内修改的文件find / -name *.server -or -name *.conf在系统中查找以.server或.conf结尾的文件find /tmp ! -user hadoop在/tmp目录中查找所有不属于hadoop用户的文件
4.find与xargs命令组合使用
xargs是给命令传递参数的一个过滤器,可以将前一个命令产生的输出作为后一个命令的参数
-
例如删除某些文件
find /opt/data -name '*.sql' |xargs rm -rf; find产生的输出(/opt/data目录下的所有sql文件)作为rm的参数。 -
例如将指定类型文件打包
find /opt/data -name '*.txt' |xargs tar -czf 2019.tar.gz将文件解压到/tmp/2019目录下用 命令:tar -zcvf 2019.tar.gz -C /tmp/2019
5.find与exec配合使用案例exec选项后面跟要执行的命令或脚本,一个-exec只能执行一个命令,而且必须在命令后面加上终结符,终结符有两个;和+
shell将find到的文件逐个执行一次command命令。如果想让find到的文件一次性执行完command命令,可以使用+号代替\;
一个find后面可以有多个-exec ommand命令,所以必须要有终结符分割 -
每天定时删除指定目录下的30天前的大于10M日志文件:
00 22 * * * find /home/infa/log -type f -name "*.log" -mtime +30 -size +10M -exec rm -rf {} \;
备注:其中{}代表前面find查找出来的文件,配合rm -rf指令,逐个删除查到的文件;-exec参数后面跟command命令,它的终止一般以;为结束标志的,分号是shell的命令分隔符,所以要加反斜杠转义下 -
清空日志文件:
find /home/infa/log -type f -name detail.log -exec "echo '' > {}" \; -
查找文件移动到指定目录下:
find /home/infa/log -name *.log -exec mv {} /tmp/log \; -
递归备份文件:
find /home/hadoop/ktl_wks -name file -exec cp {}{,.bak} \;
备注:cp filename{,.bak}等同于cp filename filename.bak把filename备份成filename.bak;另外大括号边是没有空格的,否则就不是扩展了。
二、grep命令
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。
基本格式:grep 搜索字符串 [filename] 、grep 正则表达式 [filename]
注意:在输入要搜索的字符串时最好使用双引号;在模式匹配使用正则表达式时,注意使用单引号
grep 常用参数:
-a :将 binary 文件以 text 文件的方式查找关键字
-c :统计找到 ‘搜索字符串’ 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :显示匹配字符串的行号
-v :反向选择,即显示出没有 ‘搜索字符串’ 内容的那一行
–color=auto :将找到的关键词部分加上颜色
grep "error" 201905*.log输出201905月所有log文件中包含error的行grep -c "password" info.txt输出匹配行的计数,输出文档中含有password字符的行数grep -n"password" info.txt显示所有匹配password的行和行号grep -vn"password" info.txt输出所有不包含password的行grep -i "ab" test.sh输出所有含有ab或AB的字符串的行,忽略大小写grep '^[^username]' info.txt不匹配行首是username的行
^ 匹配正则表达式的开始行,^test和\<test匹配以test开头的内容
$ 匹配正则表达式的结束行,test$和test\>匹配以test结尾的内容
^$匹配空行
\< 从匹配正则表达式的行开始
> 到匹配正则表达式的行结束
[ ] 单个字符;如[A] 即A符合要求
[ - ] 范围 ;如[A-Z]即A,B,C一直到Z都符合要求
. 所有的单个字符
\ 忽略正则表达式中特殊字符的原有含义
在linux的命令中,查看某个进程状态时使用grep ps -ef|grep dtllst
本文介绍了Linux系统中find文件查找命令与grep文件内容查找命令。find命令可根据文件属性查找,如文件名、大小等,还能进行混合查找,可与xargs、exec配合使用;grep命令是强大的文本搜索工具,能使用正则表达式搜索文本,文中给出了其基本格式、常用参数及使用示例。

236

被折叠的 条评论
为什么被折叠?



