find 命令笔记

发布时间 2024-01-08 15:21:43作者: Paimon丶

find 命令作用

  根据预设条件递归查询文件,当查询一个文件时他会将目录下所有的文件包括子目录全部查询一遍,就算找到了对应文件也不会停止
会一直查询到所有文件都查过为止。

命令格式

- find [目标] [条件] [-a|-o] [条件2]    # -a(并且) -o(或者)

常见的条件:

 -type   类型(f(表示文本文件), d(表示目录), l(表示快捷方式))

  举例:

  1.只查询是文本文件的类型:
        find /home/ -type f     #匹配打印出目录下所有的文本文件,不会打印目录  

         

   2.只查询是目录的类型:
        find /home/ -type d    #匹配打印出目录下所有的目录,不会打印文本文件
   3.只查询是快捷方式的类型:
        find /home/ -type l     #匹配打印出目录下所有的快捷方式"*.lst"的文件  

           

 

-name  类型 (*(所有),,,,) (注意:查询内容最好加双引号)

  举例:

   1. 查询目录下名字为text.txt的文件
         find /home/ -name "text.txt"

  

      2. 查询目录下名字为a开头的目录
         find /home/ -type d -name "a*"

  

      2. 查询目录下名字为a开头的目录 或 b开头的文件
         find /home/ -type d -name "a*" -o -type f -name "b*"

  

 

-size +|-  类型 (k,M,G)  (注意:查询kb的k要写小写,M与G可以写大写的)

  举例:

      1. 查询目录下文件大于100M的文件
         find /home/ -size +100M

  

 

-user  类型       根据文档的所有者查找
-group 类型       根据文档的所属组查找

  举例:

1. 查询目录下文件所有者为user用户的文件
         find /home/ -user user1

  

      2. 查询目录下文件所属组为user1用户的文件
         find /home/ group user1

  

 

-mtime  +|-  类型        #根据文件修改日期查询

  举例:

    1. 查询目录下所有十天之前修改过的文件
           find /home/ -mtime +10 
      2. 查询目录下所有十天之内修改过的文件
           find /home/ -mtime -10

 

find的高级用法:

  可将查询到的文件作为参数 以-exec 传递给对应的命令遍历执行

类型  -exec  命令  {}  \:     #以{}代替每一个查询的结果,逐个处理,遇到\:则结束

  举例:

     1.将/home/目录下包括子目录下所有大于100M的文件拷贝到/dev/find /home/ -size +100M  -exec  cp {}  /dev/  \;     #这里的{}表示查询到的文件参数,并逐个遍历执行exec后的命令, \;表示结尾。
     2.将/home/目录包括子目录下所有开头为a的文件删除find -type f -name "a*" -exec rm -f  {}  \;