Refrence
https://blog.csdn.net/yuhaojin/article/details/54948799
一、定义&区别:
find
命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。grep
命令是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patter)进行匹配查找。find
命令把匹配到的文件传递给xargs
命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去。 在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配 到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题, 因而效率不高;而使用xargs命令则只有一个进程。另外,在使用xargs命令时,究竟是一次获取所有的参数,还 是分批取得参数,以及每一次获取参数的数目都会根据该命令的选项及系统内核中相应的可调参数来确定。
二、find用法:
find /tmp -size +10000c -and -mtime +2
# 在/tmp目录下查找大于10000字节并在最后2分钟内修改的文件find / -user fred -or -user george
# 在/目录下查找用户是fred或者george的文件文件find /tmp ! -user panda
# 在/tmp目录中查找所有不属于panda用户的文件
三、grep用法:
grep 'test' d*
:显示所有以d开头的文件中包含 test的行grep ‘test’ aa bb cc
:显示在aa,bb,cc文件中包含test的行grep ‘[a-z]\{5\}’ aa
:显示所有包含每行字符串至少有5个连续小写字符的字符串的行grep magic /usr/src
:显示/usr/src目录下的文件(不含子目录)包含magic的行grep -r magic /usr/src
:显示/usr/src目录下的文件(包含子目录)包含magic的行grep -w pattern files
:只匹配整个单词,而不是字符串的一部分(如匹配’magic’,而不是’magical’),grep 'hello' $(find . -name *.c) -i*
*grep 'hello' ./yuhaojin/*.c -i -n
四、find & grep 使用方法
- 从根目录开始查找所有扩展名为.log的文本文件,并找出包含 ”ERROR” 的行
find / -type f -name "*.log" | xargs grep "ERROR"
- 从当前目录开始查找所有扩展名为.in的文本文件,并找出包含 “thermcontact” 的行
find . -name "*.in" | xargs grep "thermcontact"
五、find & xargs使用方法
find . -type f -print | xargs file
:查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件find / -name “core” -print | xargs echo “” >/tmp/core.log
:在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到 /tmp/core.log 文件中find . -type f -print | xargs grep “hostname”
:用grep命令在所有的普通文件中搜索hostname这个词find ./ -mtime +3 -print|xargs rm -f –r
:删除3天以前的所有东西 (find . -ctime +3 -exec rm -rf {} ;)find ./ -size 0 | xargs rm -f &
:删除文件大小为零的文件- find命令配合使用exec和xargs可以使用户对所匹配到的文件执行几乎所有的命令。