本文作者:心月

linux系统中文件查找命令的高级用法

心月IT博客 2019-06-12
摘要:随着电脑里的文件越来越多,或者,有些文件被搁置了很久,突然要用了,但一时又想不起来这个文件放哪了,这时候如果可以使用文件查找的方式来定位文件,那将是一件非常幸福的事。windows系统中有内置搜索或者第三方工具,但linux这种命令行式的系统中又改如何查找文件呢?

1、find查找命令

    语法格式:

        find [路径] [选项] [操作]

        选项:

        -name:根据文件名查找,区分大小写;-iname:忽略大小写
        -perm:根据文件权限查找
        -prune:该选项可以排除某些查找目录,通常和-path一起使用,用于将特定目录排除在搜索条件之外
        -user:根据文件属主查找
        -group:根据文件属组查找
        -mtime -n|+n:根据文件更改时间查找;-n:n天内;+n:n天前
        -mmin -n|+n:根据文件更改时间查找;-n:n分钟内;+n:n分钟前
        -nogroup:查找无有效属组的文件
        -nouser:查找无有效属主的文件
        -newer file1 ! file2:查找更改时间file1新但比file2旧的文件
        -type:按文件类型查找
        -size -n|+n:按文件大小查找,-n:小于n;+n:大于n
        -mindepth n:从n级子目录开始搜索
        -maxdepth n:最多搜索到n级子目录


          选项可以连续写

find /etc -mtime +10 -user root    //(查找etc下10天前修改的属于root的文件)
find . -path ./test_1 -prune -o -path ./test -prune -o -type f //(查找当前目录下除test_1、test外的文件)


        操作:

            -print:输出

            -exec :对搜索到的文件执行特定的操作;

                -exec [操作命令] {} \; //'{}'表示前面find选项的结果


 find /var/log/ -name '*log' -mtime +7 -exec rm -rf {} \; (把log下修改时间在7天以上的.log文件删除)

            -ok:功能和-exec一样,不过-ok会有提示    


        逻辑运算:

        -a:与
        -o:或
        -not|!:非



            查找包含指定内容的特定文件,并删除:

find . -type f -name '*.txt' | xargs grep -l 'findrootx' | xargs rm -rf        //查找当前路径下包含'findrootx'内容的txt文件
find . -name '*.txt' | xargs grep -l 'findrootx' | xargs rm -rf            //查找当前路径下包含'findrootx'内容的txt文件

(xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令)


2、find、locate、whereis 、which使用场景分析

    locate:

        文件查找命令,所属软件包mlocate

        不同于find命令是在整块磁盘中搜索,locate命令在数据库文件中查找

        find默认全部匹配,locate默认部分匹配


    updatedb:(更新数据库文件,新建文件要通过updatedb更新放到数据库文件中才可以使用locate来查找)

        更新/var/lib/mlocate/mlocate.db(默认由系统定时任务定时更新)

        所使用配置文件/etcc/updatedb.cnf            


    whereis:

        查找二进制程序文件,查找二进制程序文件的帮助文档,查找二进制程序源代码文件


        选项:

        -b:只返回二进制文件
        -m:只返回帮助文档
        -s:只返回源代码文件


    which:

        仅查找二进制程序文件

        -b:    只返回二进制文件


    命令使用场景推荐

        find:查找某一类文件,比如文件名部分一致,功能强大,速度慢
        locate:只能查找单个文件,功能单一,速度快
        whereis:查找程序的可执行文件、帮助文档等,不常用
        which: 值查找程序的可执行文件,常用于查找程序的绝对路径


文章版权及转载声明:

作者:心月 本文地址:http://www.xinyueseo.com/linux/279.html发布于 2019-09-07
文章转载或复制请以超链接形式并注明出处心月IT博客

分享到:
赞(

发表评论

快捷输入:

    评论列表 (有 0 条评论,人围观)参与讨论