这是两个不同的命令,关于grep:
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

而linux下的find
功能:在目录结构中搜索文件,并执行指定的操作。此命令提供了相当多的查找条件,功能很强大。
语法:find 起始目录 寻找条件 操作 
说明:find命令从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对之采取相关的操作。

所以简单点说说,grep是查找匹配条件的行,find是搜索匹配条件的文件。一个是搜索文件内容,一个是搜索文件本身。

 

场景1:服务器磁盘满,一般由大的日志文件导致,需找到大文件并删除。

解决1find / -size +500M -print0|xargs -0 du -m|sort -nr

find指令为找出500M以上的文件,print0和xargs -0配合使用,用来解决文件名中有空格或特殊字符问题。du -m是查看这些文件的大小,并以m为单位显示。最后sort -nr是按照数字反向排序(大的文件在前)

解决2:上述方法从根路径查找,可能列出一些系统文件。可以在这个查找之前先进行一下过滤。

使用du -m -d 1 /|sort -nr  先看看根路径下,哪个文件夹比较大,并且有嫌疑是导致磁盘满的罪魁祸首。然后再基于那个目录进行find。

----------------------------------------

场景2: 记得写过一个xxx.c的文件,但是忘了放哪里了

解决: find / -name *xxx*.c 模糊查找下这个文件

find -name april*                在当前目录下查找以april开始的文件
 find -name april* > a.txt        在当前目录下查找以april开始的文件,并把结果输出到a.txt中
 find -name ap* -o -name may*     查找以ap或may开头的文件
 find /tmp -name wa* -type l      在/tmp下查找名为wa开头且类型为符号链接的文件
 find /home -mtime -2             在/home下查最近两天内改动过的文件
 find /home -atime -1             查/home下1天之内被存取过的文件
 find /home -mmin +60             在/home下查60分钟前改动过的文件
 find /home -amin +30             在/home下查最近30分钟前被存取过的文件
 find /home -newer tmp.txt        在/home下查更新时间比tmp.txt近的文件或目录
 find /home -anewer tmp.txt       在/home下查存取时间比tmp.txt近的文件或目录
 find /home -used -2              列出/home中文件或目录被改动过之后,在2日内被存取过的文件或目录
 find /home -user cnscn           列出/home目录内属于用户cnscn的文件或目录
 find /home -uid +501             列出/home目录内用户的识别码大于501的文件或目录
 find /home -group cnscn          列出/home内组为cnscn的文件或目录
 find /home -gid 501              列出/home内组id为501的文件或目录
 find /home -nouser               列出/home内不属于本地用户的文件或目录
 find /home -nogroup              列出/home内不属于本地组的文件或目录
 find /home -maxdepth 4 -name tmp.txt   列出/home内的tmp.txt 查时深度最多为3层
 find /home -mindepth 3 -maxdepth 5 -name tmp.txt   在/home的第二层到第四层之间查tmp.txt
 find /home -empty                查找/home中大小为0的文件或空目录
 find /home -size +512k           查/home中大于512k的文件
 find /home -size -512k           查/home中小于512k的文件
 find /home -links +2             查/home中硬连接数大于2的文件或目录
 find /home -perm 0700            查/home中权限为700的文件或目录
 find -type f -exec ls -l {} \;   查当前目录下的所有普通文件,并在-exec选项中使用ls -l命令将它们列出
 find -name a.txt -ok rm {} \;     查当前目录下的a.txt并询问是否删除