• 22linux查询文件命令比较


    1.简介

    ​ linux 中我们经常用来查找文件的命令有 whereis、find 和 locate。

    2. whereis:定位文件所在的目录

    (1)使用 whereis 命令可以定位常用命令的位置

    [root@bat3963 ~]# whereis sh
    sh: /bin/sh /usr/share/man/man1/sh.1.gz /usr/share/man/man1p/sh.1p.gz
    

    (2)whereis 命令不是通过查找磁盘上的所有文件来实现定位,而是根据环境变量 PATH 来查找文件的。而 PATH 通常设置成存放命令的那些路径,如 /bin、/usr/bin 等,因此 whereis 的用途仅限于定位 shell 命令所在的位置

    #随便查找一个so文件,whereis一般都无法查找到
    [root@bat3963 ~]# whereis libs_liblogpublic.so
    libs_liblogpublic:
    
    3. find :查找文件

    (1)find 命令可以用来从指定的目录开始查找文件,它的速度虽然比不上 whereis 命令,但没有任何限制

    [root@bat3963 ~]# find / -name libs_liblogpublic.so
    /home/o4ufc/fbase/workspace/lib/libs_liblogpublic.so
    /home/o4ufc/appcom_all/libs_liblogpublic.so
    /home/o4ufc/lib/libs_liblogpublic.so
    /home/o4ufc/workspace/libs20201019/home/fbase/workspace/lib/libs_liblogpublic.so
    /home/o4ufc/workspace/libs20201019/home/fbase/workspace/lib/ufcso_bak/libs_liblogpublic.so
    /home/o4hg/appcom/libs_liblogpublic.so
    /home/o4bar/appcom/libs_liblogpublic.so
    /home/o4qs/appcom/libs_liblogpublic.so
    /home/o4qs/src/lib/libs_liblogpublic.so
    /home/oracle/scipt/base/appcom/libs_liblogpublic.so
    /home/oracle/scipt/clear/appcom/libs_liblogpublic.so
    /home/cres/appcom/libs_liblogpublic.so
    /home/cres/workspace/lib/libs_liblogpublic.so
    /home/o4ufc_build/fbase/workspace/lib/libs_liblogpublic.so
    /home/o4ufc_build/fbase/workspace/lib_old/libs_liblogpublic.so
    /home/o4jc/appcom/libs_liblogpublic.so
    /home/o4jc/workspace/libs20200924/app/o4jc/appcom/libs_liblogpublic.so
    

    (2)find 命令功能更强大(可参考《06grep与find命令详解》)

    [root@bat3963 ~]# find / -name libs_liblogpublic.so | xargs  ls -l
    -rw-r--r--. 1 root        root        41343 11月 27 15:43 /home/cres/appcom/libs_liblogpublic.so
    -rw-rw-r--. 1 cres        cres        41343 12月 14 16:14 /home/cres/workspace/lib/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4bar       o4bar       23512 7月   3 2017 /home/o4bar/appcom/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4hg        o4hg        23512 6月  18 2019 /home/o4hg/appcom/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4jc        dba         23512 11月 29 17:11 /home/o4jc/appcom/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4jc        dba         23512 9月  24 11:16 /home/o4jc/workspace/libs20200924/app/o4jc/appcom/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4qs        root        23512 11月 28 04:54 /home/o4qs/appcom/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4qs        dba         23512 5月  10 2017 /home/o4qs/src/lib/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4ufc       dba         41343 12月 14 15:44 /home/o4ufc/appcom_all/libs_liblogpublic.so
    -rw-rw-r--. 1 o4ufc_build o4ufc_build 41343 12月 15 09:04 /home/o4ufc_build/fbase/workspace/lib/libs_liblogpublic.so
    -rw-rw-r--. 1 o4ufc_build o4ufc_build 41343 11月 18 13:52 /home/o4ufc_build/fbase/workspace/lib_old/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4ufc       dba         23512 6月  23 2017 /home/o4ufc/fbase/workspace/lib/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4ufc       dba         41343 11月 28 04:54 /home/o4ufc/lib/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4ufc       dba         41343 10月 19 20:47 /home/o4ufc/workspace/libs20201019/home/fbase/workspace/lib/libs_liblogpublic.so
    -rwxr-xr-x. 1 o4ufc       dba         41343 11月 25 2018 /home/o4ufc/workspace/libs20201019/home/fbase/workspace/lib/ufcso_bak/libs_liblogpublic.so
    -rw-r--r--. 1 oracle      users       23512 11月 17 2016 /home/oracle/scipt/base/appcom/libs_liblogpublic.so
    -rw-r--r--. 1 oracle      users       23512 11月 25 2016 /home/oracle/scipt/clear/appcom/libs_liblogpublic.so
    
    4. locate:查找文件或目录

    (1)除 find 命令外,locate 也是在系统中查找文件的常用方法

    (2)用 locate 命令查找的文件和 find 一样没有任何限制,但执行速度比 find 要快不少,其主要原因在于 locate 不是从磁盘中实时查找文件,而是到由 updatedb 命令产生的信息库中查找相应的文件和目录,这样一来速度就快了好多。

    [root@bat3963 ~]# updatedb
    [root@bat3963 ~]# locate libs_liblogpublic.so
    /home/cres/appcom/libs_liblogpublic.so
    /home/cres/workspace/lib/libs_liblogpublic.so
    /home/cres/workspace/lib/libs_liblogpublic.so.bak
    /home/o4bar/appcom/libs_liblogpublic.so
    /home/o4hg/appcom/libs_liblogpublic.so
    /home/o4jc/appcom/libs_liblogpublic.so
    /home/o4jc/workspace/libs20200924/app/o4jc/appcom/libs_liblogpublic.so
    /home/o4qs/appcom/libs_liblogpublic.so
    /home/o4qs/src/lib/libs_liblogpublic.so
    /home/o4ufc/appcom_all/libs_liblogpublic.so
    /home/o4ufc/fbase/workspace/lib/libs_liblogpublic.so
    /home/o4ufc/lib/libs_liblogpublic.so
    /home/o4ufc/workspace/libs20201019/home/fbase/workspace/lib/libs_liblogpublic.so
    /home/o4ufc/workspace/libs20201019/home/fbase/workspace/lib/ufcso_bak/libs_liblogpublic.so
    /home/o4ufc_build/fbase/workspace/lib/libs_liblogpublic.so
    /home/o4ufc_build/fbase/workspace/lib/libs_liblogpublic.so.bak
    /home/o4ufc_build/fbase/workspace/lib_old/libs_liblogpublic.so
    /home/oracle/scipt/base/appcom/libs_liblogpublic.so
    /home/oracle/scipt/clear/appcom/libs_liblogpublic.so
    

    (3)如果 locate 找不到某个文件,而我们又确信该文件肯定存在,那一定是 updatedb 生成的信息库已经过时了。此时只需要以 root 用户登录,然后执行 updatedb 命令,重新建立整个系统所有文件和目录的资料库,虽然这个过程可能会浪费一点时间,但以后再查找文件就方便多了。

    5. 联系

    ​ 在 linux 中,也有相当优秀的搜索系统。通常,find 不常用,因为速度慢,耗费磁盘空间。通常我们先使用 whereis 或者 locate 来检查,如果找不到,采用 find 搜索。因为 whereis 与 locate 是使用数据库来搜索数据,所以相当快,而且并没有实际搜索硬盘,比较省时。

  • 相关阅读:
    ASPNET5应用程序启动
    DNX概述
    MySQL数据库管理员密码忘记如何修改?
    Rsync数据复制软件应用
    Centos7系统中Mysql数据库的安装
    基于Haproxy+Keepalived实现Haproxy的高可用
    源码编译安装Mariadb数据库的时候报错,/usr/bin/c++ doesn't support -std=c++11 or -std=c++0x, you need one that does.
    mariadb数据库的安装
    更改Ubuntu和Centos系统中的镜像源
    快速搭建ELK日志分析系统
  • 原文地址:https://www.cnblogs.com/rock-cc/p/14185871.html
Copyright © 2020-2023  润新知