• linux文件查找-find命令


    find命令:用于在文件树中查找文件,并作出相应的处理

    1、find命令的格式;

             find pathname -options [-print -exec -ok ...] {}

    2、find命令的参数;

             pathname: find命令所查找的目录路径。例如用“.”来表示当前目录,用“/”来表示系统根目录。

             -print: find命令将匹配的文件输出到标准输出。

             -exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } ;,注意{ }和;之间的空格。

             -ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。

    3、find命令的选项:

             -depth:在查找文件时,首先查找当前目录中的文件,然后再在其子目录中查找。

             -name:按照文件名查找

             -perm:按照文件权限来查找

             -prune:可用使find命令不在当前制定的目录中查找,如果同时使用-depth选项,那么-prune将被find忽略

             -user:按照文件属主查找

             -group:按照文件属组查找

             -nouser:查找无有效属主的文件

             -nogroup:查找无有效属组的文件

             -newer file1 file2:查找更改时间比file1新,但是比file2旧的文件

             -type:查找某一类型的文件,诸如:f-普通文件、d-目录、c-字符文件、b-块设备、p-管道文件、l-符号连接

             -size:[c] 查找文件长度为n块的文件,带有c时表示文件长度以字节计

             -fstype:查找属于某一类型文件系统的文件

             -mount:查找文件时不跨越文件系统mount点

             -follow:如果find命令遇到符号连接文件,就跟踪至连接所指向的文件

             -cpio:对匹配的文件使用cpio命令,将文件备份到磁带设备中

             -mtime -n +n:按照文件的修改时间来查找,-n文件更改时间距现在n天以内,+n文件更改时间距现在n天以前

             -amin n:查找系统中最后n分钟访问的文件

             -atime n:查找系统中最后n*24小时访问的文件

             -cmin n:查找系统中最后n分钟被改变文件状态的文件

             -ctime n:查找系统中最后n*24分钟被改变文件状态的文件

             -mmin n:查找系统中最后n分钟被改变文件数据的文件

             -mtime n:查找系统中最后n*24小时被改变文件数据的文件 

    4、使用示例:

             1)查找指定时间内修改过的文件:(查找48小时内修改过的文件)

    [root@bogon ~]# find -atime -2
    .
    ./.bash_profile

             2)根据关键字查找:(查找当前目录以.log结尾的文件)

    [root@bogon log]# find . -name "*.log"
    ./audit/audit.log
    ./tuned/tuned.log

             3)根据文件权限查找:(查找/tmp目录下权限为755的文件)

    [root@bogon ~]# find /tmp -perm 755 

             4)根据文件类型查找:

    [root@bogon ~]# find . -type d -print    ##查找当前目录下的目录
    .
    ./data
    [root@bogon ~]# find . ! -type d -print    ##查找当前目录下的非目录
    ./.bash_logout
    ./.bash_profile

             5)根据文件大小查找:(查找当前目录下大于1k的文件)

    [root@bogon ~]# find -size +1000c -print
    .
    ./anaconda-ks.cfg
    ./.bash_history

             6)根据文件名查找

    [root@bogon ~]# find . -name "*.txt"
    ./test.txt 

    5、使用exec或ok来执行shell命令:

             只要把想要的操作写在一个文件里,就可以用exec来配合find命令查找

        1)显示当前目录下面所有大于10k的文件,exec后面执行了一个命令,{}代表文件名

    [root@bogon ~]# find . -type f -size +10k -exec ls -l {} ;
    -rw-r--r--. 1 root root 12288 May  4 17:22 ./.test.txt.swp
    -rw-------. 1 root root 40960 May  4 17:25 ./.swp

             2)查找/tmp下10天前的文件,删除

    [root@bogon ~]# find /tmp -type f -mtime +10 -ok rm {} ;

         3)备份配置文件,添加.bak扩展名

    [root@bogon ~]# find . -name "*.conf" -exec cp {} {}.bak ;
    -rw-r--r--. 1 root root 11753 May  6 18:03 httpd.conf
    -rw-r--r--. 1 root root 11753 May  6 18:04 httpd.conf.bak

        4)查找主目录下被其他用户写入的文件

    [root@bogon ~]# find ~ -perm -002 -exec chmod o-w {} ;

     6、-print 匹配条件:

      简写表达式按顺序求值, -a 和 -o 都是短路求值。

        1)忽略某个目录(在httpd目录下查找文件但不希望在/httpd/conf目录下查找)

    [root@bogon etc]# find httpd -path "httpd/conf" -prune -o -print
    httpd
    httpd/conf.d
    httpd/conf.d/README
    httpd/conf.d/autoindex.conf

         2)匹配多个条件,采用OR条件操作

    [root@bogon ~]# find . ( -name "*.txt" -o -name "*.conf" ) -print
    ./httpd.conf
    ./test.txt

    7、xargs命令:

      有些命令不能接受过多参数,此时命令执行可能会失败,错误信息通常是“参数列太长”或“参数列溢出”,这就是xargs命令的用处所在
      find | xargs COMMAND

      示例:在当前目录下所以普通文件中过滤“nologin”这个词

    [root@bogon ~]# find . -type f -print |xargs grep "nologin"
    Binary file ./.test.txt.swp matches
    ./test.txt:x:1:1:bin:/bin:/sbin/nologin
    ./test.txt:on:x:2:2:daemon:/sbin:/sbin/nologin

    8、locate命令:

      查询系统上预建的文件索引数据库,依赖于先构建索引,构建过程需要遍历整个根文件系统,极消耗资源。

      工作特点:查找速度快,模糊查找,非实时查找。

       -i  执行区分大小写的搜索

      -n x   只列举前x个匹配选项  

  • 相关阅读:
    HTML5项目笔记7:使用HTML5 WebStorage API构建与.NET对应的会话机制 Hello
    论设计模式和分析模式
    昨天我做了点什么事情啊?
    时间,时间,还是时间
    人生需要规划
    突然想起今天的博客汇报没写
    昨天看了熊猫大侠
    双休日往往会忘了写日志
    老婆说我是缺心眼!
    要下班了才想起没写报告
  • 原文地址:https://www.cnblogs.com/yuezhimi/p/6815996.html
Copyright © 2020-2023  润新知