Linux的文件搜索命令(locate ,find,grep,find命令和)

时间:2022-12-25 23:19:08

刚开始学Linux,这是关于Linux文件搜索命令,就目前,尽我所能把他写全一点,后期随时补充

文件搜索命令

一、locate命令

二、find命令

三、grep命令

四、find命令和grep命令的区别

 

1、locate命令

语法: locate 文件名

例:locate user(搜索user的文件名)

优点:搜索速度快

缺点:只能搜索指定文件名,比方搜索user 文件的时候只会搜索到user,搜索不到users

注意:locate并不是在数据库里面搜索的,而是在/var/lib/mlocate里面进行搜索的,但是mlocate不是实时更新的,是一天更新一次,所以当你新建一个文件夹,locate命令是搜不到的,这个时候就需要用一个更新数据库的命令

更新命令:updatedb (强制更新)

 

2、find命令

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

例   :find /root -name User(在root目录下搜索文件名为User文件)

注意:find命令查询出来的文件同样只能和搜索出来的文件名要一模一样,如果要进行模糊查询,就要用到通配符

linux的通配符

 *   匹配任意内容

例:find /root -name *d (查询root目录下文件名以d结尾的文件名)

  匹配一个内容

例: find /root -name us?r (查询root目录下文件文件名是us什么r的文件)

 []  匹配任意一个中括号内的字符

例:find /root -name user[sd] (查询root目录下文件名是users和userd的文件)

 

补充:除此之外find还有其他的命令

1.  -i 不区分大小写

     find /root -iname User

2.  搜索有所有者的文件

          find /root -user root

3.  搜索没有所有者的文件(如果有则是垃圾文件,可删除)

          find /root -nouser root

4.  查询指定时间内的文件

  -atime 文件询问时间

  -ctime 改变文件属性

  -mtime 修改文件内容

例: find /var/log -mtime +10 (查询/var/log下10天前修改的文件)

+10   查询10天前的文件

10     查询10天当天的文件

-10    查询10天内修改的文件

5.  查找指定大小的文件

     find -size 25k

     find -size 20M

注意:  k为小写、M为大写(一定要这么写,不然会报错)

6.  查找文件名和 i 节点

    find /home -inum 262242 (查找/home目录下i节点为262242的文件名)

7.  并且、或者

    -a   and 并且    ,两个文件都满足

    -o   or 或者  ,两个条件有一个满足即可

例: find /home -size +20k -a -size -50k  (查询在home目录下文件在大于20k并且小于50k的文件)

8.  -exec 命令 {} \     命令2处理命令1搜索出来的结果

   find /home -size +20k -a -size -50k  -exec rm {} \; (查询在home目录下文件在大于20k并且小于50k的文件之后删掉他)

3、grep命令

语法: grep [选项] 字符串 文件名

    -i  忽略大小写

    -v 排除指定字符串(取反)

例:grep "size" User (查找User文件里面有size的字符串)

注意:指定字符串一定要用" "

4、find命令和grep命令的区别

find命令:在系统中搜索文件名,如需模糊查询,则需要通配符(*,[],?   上文有讲)

grep命令:在文件中搜索指定字符串,入去匹配,则要用正则表达式