find使用案例
xargs使用教程
等明天再来细细总结吧,另外将贴上如何利用find清楚tomcat日志的代码和解析。
find命令可用来查找文件名或后缀名,通过正则的方式可根据文件内容快速定位到文件位置。
基本语法:
find . -name testfile.txt | 在当前目录下查询testfile.txt‘文件 |
---|---|
find /home -name *.jpg | 在home目录下查找后缀为jpg文件 |
– | – |
举个栗子:
find /home/username/ -name "*.err"
这个语句实现的便是在username目录下查找后缀为.err的文件,还记得正则里用到的一些符号吗,这里做个粘贴以供参考。
语法: grep [-cinvABC] ‘word’ filename
-c :打印符合要求的行数
-i :忽略大小写
-n :在输出符合要求的行的同时连同行号一起输出
-v :打印不符合要求的行
-A :后跟一个数字(有无空格都可以),例如 –A2则表示打印符合要求的行以及下面两行
-B :后跟一个数字,例如 –B2 则表示打印符合要求的行以及上面两行
-C :后跟一个数字,例如 –C2 则表示打印符合要求的行以及上下各两行
在正则表达式中,”^”表示行的开始,$
表示行的结尾,那么空行则表示^$
,如果你只想筛选出非空行,则可以使用 “grep -v ‘^$’ filename”得到你想要的结果。
[root@bets-test-nginx-2 log]# grep 'r..o' /etc/passwd
operator:x:11:0:operator:/root:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
.
表示任意一个字符,上例中,就是把符合r与o之间有两个任意字符的行过滤出来。
*
表示零个或多个前面的字符。
.*
表示零个或多个任意字符,空行也包含在内。
比如我想找到文件目录下包含auth关键词的文件。
find . -name "*auth*"
使用场景:
- 找到大于100M的文件并给予删除:
find . -type f -size ++4M |xargs rm -f
排除某个目录进行查找
#排除./misc目录进行查找txt文件
find . -path ./misc -prune -false -o -name '*.txt'
#排除多个文件目录进行查找
find . -type d \( -path dir1 -o -path dir2 -o -path dir3 \) -prune -false -o -name '*.txt'