linux查找命令find

时间:2023-03-08 16:48:34
linux查找命令find

-1  linux的查找命令有两个:

    locate  find

    locate:有一个索引库,故速度快,但是新加入的一般不再索引库中,故可能无法查到

    find:搜索速度慢,但是功能及其强大,可以追加命令动作进行处理

-2  find命令格式

        find    查找位置   查找标准(可有多个标准)     查找后动作

   eg1:  find  /home   -type f -mmin -5 -ls   -exec mv {} {}.bak \;  #查找/home中5分钟以内修改过的文件,并将文件属性列出,同时将找出的文件追加后缀.bak

   *多个标准之间可用-a -o -not进行连接,-a是并,-o是与,-not取反

-3  find命令常用的一些标准选项

  --1  type [fcblsdp]

    f  文件  c  字符设备  b  块设备  l  链接文件  s  套接字文件  d  目录  p  管道文件

    eg:请看eg1

  --2  访问时间(cat之类的也算) 内容修改时间 属性修改时间(名字,权限之类的)

      -atime    -mtime    -ctime  以天为单位的时间标准

      -amin   -mmin     -cmmin  以分钟为单位的时间标准

    eg:请看eg1    

      *给一个目录添加文件,那么目录记录的信息发生变化,则motify发生变化,与此同时因为目录增加了信息,导致目录大小变化,故c也发生变化,因为目录大小也是属性

  --3  -perm  #按照权限标准

        +mode  #匹配mode中任意一位包含的权限

    eg:find /home  -perm +114  #搜索/home下权限为114、104、110、100、014、004、010的文件

        -mode   #匹配mode中三位都包含的权限

    eg:find /home  -perm -115  #搜索/home下权限为111、114的文件

        mode    #匹配和mode完全一样的

    eg:find   /home  -perm 115   #搜索/home下权限为115的文件      

  --4  -size [+-][kMG] #按照大小标准

        +[kMG]  #比此标准大的文件

        -[kMG]   #比此标准小的文件

         [kMG]    #等于此标准的文件

  --5  -name [file_name]  #以名称为标准

       -iname [file_name]   #以名称为标准(忽略大小写)

  --6  -uid  -gid  #以用户id和组id为标准为查找

  --7  -nouser     #查找没有属主的文件

       -nogroup   #查找没有属组的文件

       -user USERNAME   #根据属主查找;

       -group GRPNAME   #根据属组查找;

-4  查找后动作

  --1  -exec command \;

    eg:请看eg1

  --2  | xargs command

    eg:find  /home   -type f -mmin -5 | xargs mv {} {}.bak  #使用xargs不能用-ls因为xargs获取的是管道过来的信息,-ls传递过来的并不是准确的文件名

  --3  -ok command \;  #与-exec的区别在于,有修改的时候,会有提示