天天看点

三、文件搜索命令【基础篇】

1、locate 命令格式

locate用法

locate 文件名

在linux指定的数据库中按文件名搜索,搜索速度特别快

数据库地址

/var/lib/mlocate

locate

命令搜索的文件名全都存在该目录下

mlocate

数据库并不会实时更新,而是每天更新一次

更新数据库命令(使用该命令随时更新数据库)

updatedb

locate命令配置(使用locate搜索不生效应该就是该配置的原因)

  • 该配置文件存在于:

    /etc/updatedb.conf

  • PRUNE_BIND_MOUNTS = "YES"

    //

    yes

    代表开启搜索限制
  • PRUNEFS =

    // 搜索时,不搜索的文件系统
  • PRUNENAMES =

    // 搜索时,不搜索的文件类型
  • PRUNEPATHS =

    // 搜索时,不搜索的路径

2、搜索命令的命令whereis与which

whereis用法(该搜索只能搜索命令)

whereis 命令名

搜索命令所在路径及帮助文档所在位置

- 选项

-

-b

只查找可执行文件

-

-m

只查找帮助文件

which用法(该搜索只能搜索命令)

which 命令名

搜索命令所在路径及别名

PATH环境命令

如果想直接使用命令,则需要在PATH中填写该命令所在的目录

PATH环境变量: 定义的是系统搜索命令的路径

输入

echo $PATH

,即可查看

$PATH

中有哪些目录,如下例:

root@ubuntu:/$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
           

3、文件搜索命令 find

find 用法

find [搜索范围] [搜索条件]

find 举例

root@ubuntu:/$ find / -name .log
/home/ceshi/.log
           
注:避免大范围搜索,因为搜索非常耗费系统资源

Linux中的通配符

使用find搜索时,只知道文件的其中一个字符,那么就可以使用通配符,可以使你更容易搜索到文件

-

*

匹配任意内容

-

?

匹配任意一个字符

-

[]

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

find 扩展

  • find /home -iname install.log

    // 不区分大小写
  • find /home -user root

    // 按照所有者搜索
  • find /home -nouser

    // 查找没有所有者的文件
  • find /home/log/ -mtime +10

    // 查找10天前修改的文件
    • atime

      文件访问时间
    • ctime

      改变文件属性
    • mtime

      修改文件内容
    • -10

      10天内修改文件 |

      10

      10天当天修改的文件 |

      +10

      10天前修改的文件
  • find /etc -size +25k

    或者

    find /etc -size +2M

    // 查找文件大小大于25k或者2M的文件
    • 这里

      k

      必须是小写,

      M

      必须是大写
    • 其余用法都跟上列一样
  • find /etc inum 262422

    // 查找i节点是262422的文件
  • find /etc -size +20k -a -size -50k

    // 查找/etc/目录下,大于20kb并且小于50kb的文件
    • -a and

      // 逻辑与,两个条件都满足
    • -o or

      // 逻辑或,两个条件满足一个即可
  • find /etc -size +20k -a -size -50k -exec ls -lh {} \;

    // 查找/etc/目录下,大于20kb并且小于50kb的文件,并显示详细信息
    • -exec

      #命令#

      {} \;

      // 对搜索结果执行操作

4、搜索字符串命令grep

grep 用法

grep [选项] 字符串 文件名

在文件当中匹配符合条件的字符串

  • 选项
  • -i

    忽略大小写
  • -v

    排除指定字符串

grep 举例

查找123.log文件里包含”a”的部分

root@ubuntu:/home/ceshi$ grep "a" .log
casca
a
as
           

find命令 和 grep命令的区别

  • find

    命令:在系统中搜索符合条件的文件名,如果需要匹配,就得使用通配符,通配符是完全匹配
  • grep

    命令:在文件中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式包含匹配

继续阅读