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)
上一篇 2016-11-28 01:00
下一篇 2016-11-28 10:29

相关推荐

  • 菜鸟教你如何磁盘分区与创建文件系统以及挂载(2)

    一、文件系统简介与创建 1、什么是文件系统?    文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件结构称为文件管理系统,简称文件系统。 2、文件系统的作用    从系统角度来看,文件系统是对文件存储设备的空间进行组织和分配,负责文件…

    Linux干货 2016-08-29
  • 推荐CentOS Linux下的分区及格式化工具

    简介 伴随着科技的飞速发展,越来越多的企业对于服务器的稳定要求越来越高,越来越多的企业开始采用linux系统来部署自己的服务,以求高效的稳定性,当然任何操作系统都需要一个最基本的基础,那就是硬盘,及硬盘分区,今天来给大家推荐几款CentOS Linux下的分区工具及如何查看分区环境,也会给大家来带一些硬盘的基本知识 一、硬盘的接口类型 分区肯定是对硬盘进行分…

    2017-03-19
  • LVM练习及quota和dd命令

    练习 1、创建一个至少有两个PV组成的大小为20G的名为testvg的 VG;要求PE大小为16MB, 而后在卷组中创建大小为5G的逻 辑卷testlv;挂载至/users目录 第一步!首先准备足够大的硬盘来实验 [root@Cloud /]#lsblk  #添加了/dev/sdb/c硬盘  NAME &nb…

    Linux干货 2016-09-09
  • linux命令 kill命令详则

    kill命令 kill用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息(默认)为SIGTERM(15),可经指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。 语法 kill(选项)(参数) 选项 -a:当处理当前进程时,不限制命令名和进程号的对应关系; &…

    2017-08-21
  • httpd及https

    1、建立httpd服务,要求: (1) 提供两个基于名称的虚拟主机:     www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1/error_log,访问日志为/var/log/httpd/www1/access_log;   &nbs…

    2017-06-05
  • linux下正则表达式的学习

    linux 下正则表达式用法总结 正则表达式作为一个模板,将某个字符模式与所搜索的字符串进行匹配。简单的说,正则表示式就是处理字符串的方法。常用来匹配字符的元字符总结如下: Paste_Image.png 有了以上这些元字符原则上可以搜索出任务想要表达的字符,可为了更灵活使用,往往还要搭配一些次数匹配的用法 Paste_Image.png 例如:a&nbsp…

    Linux干货 2017-06-04

评论列表(1条)

  • luoweiro
    luoweiro 2016-11-30 23:21

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