Linux学习第八篇之文件搜索命令find、locate、which、whereis、grep

时间:2022-08-21 09:19:18

一、find命令:(Windows搜索小工具推荐——Everything)

  命令名称:find

  命令所在路径:/bin/find

  执行权限:所有用户

  语法:find [搜索范围] [匹配条件]

  功能描述:文件搜索

二、find命令的例子:

  1、find /etc -name init  在目录/etc中查找文件init(会在子目录下的文件继续搜索init),-name 搜索条件的选项,文件名是全匹配的,模糊搜索可用通配符处理,如find /etc -name *init*,如果报find: paths must precede expression,用单引号把*init*包起来;其中*匹配一个或多个字符,问号?匹配单个字符;Linux严格区分大小写,所以查找时需要注意大小写的书写,如需不区分大小写的查找,用-iname就可以

  2、find / -size +204800  在根目录下查找大于100Mb的文件,其中+n大于,-n小于,n等于,n为数据块的大小,单位是512b=0.5kb,1kb等于两个数据块,100Mb=102400kb=204800;也可以直接加单位搜索,如find / size +1M

  3、find /home -user root  在根目录下查找所有者为root的所有文件.-group,根据所属组查询

  4、find /etc -cmin -5  在/etc 下查找5分钟内被修改过属性的文件和目录 其他时间属性选项: -amin  访问时间(access)  -cmin 文件属性(change)  -mmin 文件内容(modify),+5,超过5分钟

  5、find /etc -name init -a -type f  在etc目录下查找文件类型为文件并且文件名为init的文件,d表示目录,l表示软链接文件,f表示文件,-a表示两个选项同时满足,-o表示两个条件满足任意一个即可

  6、find /etc -name init -exec ls -l {}\;  在etc目录下查找文件init,并对搜索结果执行操作,-exec执行命令,ls -l 查看文件的属性,{} \;指定格式;exec也可以换成ok命令,会在每个查询到的文件之前询问是否需要执行后面的命令。

  7、find . -inum 23333 -exec rm {} \;  在当前目录下查找节点为23333的文件并删除,可用于对比较难以拼写的文件名的操作。

 

三、其他搜索命令

  命令名称:locate

  命令所在路径:/usr/bin/locate

  执行权限:所有用户

  语法:locate 文件名

  功能描述:在文件资料库中查找文件

  范例:locate init

  注意:搜索速度快,原理是locate有本地文件索引库;新创建的文件不一定会马上能搜索到,系统会定时的进行更新;使用updatedb命令会更新文件资料库;/tmp(临时文件目录)目录下的文件不会被添加到locate的资料库中,因此会搜索不到;locate也可以使用通配符进行匹配;-i 选项是不区分大小写的搜索

 

 

  命令名称:which

  命令所在路径:/usr/bin/which

  执行权限:所有用户

  语法:which 命令

  功能描述:搜索命令所在目录及别名信息

  例子:which ls

 

  命令名称:whereis

  命令所在路径:/usr/bin/whereis

  执行权限:所有用户

  语法: whereis [命令名称]

  功能描述:搜索命令所在目录及帮助文档路径

 

 

  命令名称:grep

  命令所在路径:/bin/grep

  执行权限:所有用户

  语法:grep -iv [指定字串] [文件]

  功能描述:在文件中搜寻字串匹配的行并输出,-i表示不区分大小写,-v排除指定字符串

  例子:grep -v '^#' ~/.bash_profile 查找~/.bash_profile文件,并排除以#开头的行