Linux文件查找命令

 

Linux系统文件查找

    使用linux系统难免会忘记文件所在的位置,可以使用以下命令对系统中的文件进行搜索。

locate命令:

    locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

命令用法:
        locate [OPTION]... PATTERN...
常用选项:
        -b, --basename         至匹配路径中的基名
        -c, --count            统计出共有多少个符合条件的文件
        -d, --database DBPATH  用 DBPATH 替代默认的数据库(/var/lib/mlocate/mlocate.db)
        -e, --existing         只显示当前存在的文件条目
        -L, --follow           当文件存在时跟随蔓延的符号链接 (默认)
        -h, --help             显示本帮助
        -i, --ignore-case      匹配模式时忽略大小写区别
        -l, --limit, -n LIMIT  限制为 LIMIT项目的输出 (或 计数) 
        -m, --mmap             忽略向后兼容性
        -P, --nofollow, -H     当检查文件时不跟随蔓延的符号链接
        -0, --null             输出时以 NUL 分隔项目
        -S, --statistics       不搜索项目,显示有关每个已用数据库的统计信息
        -q, --quiet            不报告关于读取数据库的错误消息
        -r, --regexp REGEXP    搜索基本正则表达式 REGEXP 来代替模式
            --regex            模式是扩展正则表达式
        -s, --stdio            忽略向后兼容性
        -V, --version          显示版本信息
        -w, --wholename        匹配完整路径名 (默认)

            注:索引构建过程需要遍历整个根文件系统,极消耗资源

find命令:

    Linux下find命令通过遍历指定起始路径下文件系统层级结构完成文件查找,查找速度略慢,但查找结果精确。

命令用法:
        find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
            查找起始路径:指定具体搜索目标起始路径,默认为当前目录
            查找条件:指定的查找标准,可以根据文件名、大小、类型、从属关系、权限等标准进行,默认为找出指定路径下的所有文件;
            处理动作:多符合查找条件的文件作出的操作,例如删除等操作,默认为输出至标准输出;

        查找条件:
            表达式:选项和测试

            测试:结果通常为布尔型(“true”“false”)
                根据文件名查找:
                    -name “pattern”
                    -iname “pattern”:不区分大小写
                        支持glob风格的通配符
                    -regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非其名
                    -user USERNAME:查找属主指定用户的所有文件
                    -group GRPNAME:查找属组指定组的所有文件
                    -uid UID:查找属主指定的UID的所有文件
                    -gid GIU:查找属组指定的GID的所有文件
                    -nouser:查找没有属主的文件
                    -nogroup:查找没有属组的文件

                根据文件的类型查找:
                    -type TYPE:
                        f:普通文件    
                        d:目录文件
                        l:符号链接文件
                        b:块设备文件
                        c:字符设备文件
                        p:管道文件    
                        s:套接字文件

                组合测试:
                    与:-a,默认组合逻辑
                    或:-o,
                    非:-not,!

                根据文件的大小查找:
                    -size [+|-] #UNIT    
                        常用单位:K,M,G

                根据时间戳查找:
                    以“天”为单位:
                        -atime [+|-]#
                        -mtime
                        -ctime
                    以“分钟”为单位:
                        -amin        
                        -mmin                        
                        -cmin

                根据权限查找:
                    -perm [/|-]mode
                        mode:精确权限匹配
                        /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系
                        -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系

        处理动作:
            -print:输出至标准输出,默认动作
            -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的形象信息
            -delete:删除查找到的文件
            -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中
            -ok COMMAND {} \;:对查找到的每个文件执行由COMMAND表示的命令,每次操作都由用户进行确认
            -exec COMMAND {} \; :对查找到的每个文件执行由COMMADN表示的命令

        注:find传递查找到的文件路径至后面的命令时,是先查找出所有符合条件的文件路径,并一次传递给后面的命令,但是有些命令不能接受过长的参数,此时命令执行会失败,另一种方式可规避此问题:
                find | xargs COMMAND

whereis命令:

    whereis命令是定位可执行文件、源代码文件、帮助文件在文件系统中的位置。这些文件的属性应属于原始代码,二进制文件,或是帮助文件。

命令用法:
        whereis [-bmsu] [BMS 目录名 -f ] 文件名
常用选项:
        -b   定位可执行文件。
        -m   定位帮助文件。
        -s   定位源代码文件。
        -u   搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
        -B   指定搜索可执行文件的路径。
        -M   指定搜索帮助文件的路径。
        -S   指定搜索源代码文件的路径。

type命令:

    type 命令被用于判断另外一个命令是否是内置命令

命令用法:
        type [选项] [参数]
常用选项:
        -a 显示一个名字的所有可能
        -t 判断一个名字当前是否是alias、keyword、function、builtin、file
        -p 查看一个外部命令的执行路径
        -P 查看内部命令路径

        alias 别名
        keyword 关键字,Shell保留字
        function 函数,Shell函数
        builtin 内建命令,Shell内建命令
        file 文件,磁盘文件,外部命令
        unfound 没有找到

which命令:

    which命令的作用是在PATH变量指定的路径中搜索某个系统命令的位置并且返回第一个搜索结果。也就是说使用which命令就可以看到某个系统命令是否存在以及执行的到底是哪一个位置的命令。

命令用法:
        which [options] [--] programname [...]
常用选项:
        -a   查找全部内容,而非第一个文件
        -n   <文件名长度>  指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。 
        -p   <文件名长度>  与-n参数相同,但此处的<文件名长度>包括了文件的路径。 
        -w  指定输出时栏位的宽度。 
        -V  显示版本信息。

原创文章,作者:641348038@qq.com,如若转载,请注明出处:http://www.178linux.com/61164

(0)
641348038@qq.com641348038@qq.com
上一篇 2016-11-28
下一篇 2016-11-28

相关推荐

  • N25-第10周博客作业

    请详细描述CentOS的启动流程     启动第一步–加载BIOS         当打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它,这是因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息…

    Linux干货 2017-03-10
  • BIND 配置DNS服务器以及子域授权

    1、安装bind      [root@www ~]# yum -y install bind 2、查看安装生成的文件      [root@www ~]# rpm -ql bind | less 3、程序路径     /var/named 4、配置…

    Linux干货 2016-03-22
  • 马哥教育首届IT技术博客大赛–复审阶段

    马哥教育首届IT博客大赛大众评审开始了 2016年马哥教育首届IT博客技术大赛,评委初审已结束,正式进入大众评审阶段。。。。 此次博客大赛,虽然因为准备时间比较仓促,举办经验略有不足(快去鄙视小编~&#x1f612;),但还是收到了10多位优秀的小伙伴共80篇博文(看看人家的劲头,这就是差距呀&#x1f613;)的参赛作品投递; 其中初审最高…

    Linux干货 2016-06-07
  • 关于大型网站技术演进的思考(一):存储的瓶颈(1)

    原文出处: 夏天的森林  前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出全部听到的知识,今天我换了个思路是回味这次培训,这个思路就是通过本人目前的经验和技术水平来思考下大型网站技术演进的过程。 首先我们要思考一个问题,什么样的网站才是大型网…

    Linux干货 2015-02-26
  • Linux网络管理之路由和team网络组

    如何实现把linux当路由器来使用,实现不同网段之间的通信访问,这就是今天所要实现的路由配置   环境准备:4台虚拟机,两台中间两台作为路由器来使用(每天主机两块网卡),其他两台作为终端主机,目的是让不同网段的两台主机之间互相访问(这里在vmware里面做的实验,所以网卡的类型都设置为桥接)   拓扑图:   步骤一:将A、D两…

    系统运维 2016-09-10
  • Linux systemd管理

                                                      &nbsp…

    系统运维 2016-09-28

评论列表(1条)

  • luoweiro
    luoweiro 2016-11-30 23:21

    知识点总结的非常不错,如果再配一些示例会更好,这样既能验证你的掌握程度,又能加深印象。