find命令总结

find  用来在指定目录下查找文件、目录。默认在当前目录下查找子目录与文件,并打印找到的子目录和文件,不设置任何参数时,find 将显示当前目录中所有子目录与文件(包含隐藏文件)。

相对于 locate 命令,find命令进行实时查询,查找速度较慢

语法:  find   path   -option    [ -print ]     [ -exec -ok command ]  {}  ; 

path    查找的路径,查找多个目录时,目录用空格分开,默认在当前目录中查找。

ipath   同path,但忽略字符大小写,不常用;

print    将匹配的文件输出到标准输出,默认项。

exec   对匹配的文件、目录,执行该参数所给出的命令,注意 { } 和 ;之间的空格,{}中的内容并非一次引用所有的搜索出的内容,而是一行一行引用,接tar 命令时,每一个查找到的文件都有一个tar包。

    例:find   -name   “a.conf”   -exec   cp   {}    {}.ori   ;    #将文件 a.conf 备份为 a.conf.ori  

ok    和-exec作用相同,但在执行每一条命令之前,会给用户提示是否执行该命令。 

-name  查找的文件名,常配合通配符使用

-iname  查找的文件名,不区分大小写

-perm  文件权限

     -perm    664      权限完整匹配,查找权限为644的文件或目录,

     -perm  /u+w,g+w    权限部分匹配,用户,用户组有写权限,g+w与g=w作用相同

-type   文件类型,f 为普通文件,d 为目录文件,l  为链接文件,b为块设备文件,c为字符设备文件,p为/管道文件,s 为socket文件 

-size   文件大小

     -size +2M   大于2M的文件 

     -size -2M  小于2M的文件

    -size 2M       大小为2M的文件

-mmin  文件修改时间(单位分钟)  

-mtime  文件修改日期(单位填)

       -mtime + 2       2天以前修改的文件

       -mtime - 2        2天以内修改的文件 

       -mtime  2    前第2天修改的文件

-ctime  文件属性更改日期(单位天)  File's status was  changed

-cmin  文件属性更改时间(单位分钟)

-atime  最近一次访问日期(单位填)

-amin  最近一次访问时间(单位分钟) 

-anewer  文件最近一次的访问时间早于最近一次的修改时间(File was last accessed more recently than file was modified. );

-cnewer  文件属性的改动时间早于文件的修改时间( File's status was last changed more recently than file was modified. )

-newer   某一文件的修改时间早于另一个文件(File  was modified more recently than file. ); 

-user    查找属主为指定用户(UID)的文件 、

-group    查找属组为指定组(GID)的文件

-uid       查找属主为指定的UID号的文件

-gid       查找属组为指定的GID号的文件

-nouser    查找没有属主的文件

-nogroup    查找没有属组的文件 

-maxdepth     设置最大目录层级;

-mindepth    设置最小目录层级;

  

find      -mtime    -1    -type   f             #查找当前目录下一天内修改的,文件类型为文件

find     -name    "[A-Z]*"   -type    d            #当前目录中,查找以大写字母开头的目录

find     /etc   -name   "passwd*"   -type  f    -exec grep   "test"   {}   ;             #查看是否存在 test 用户,在/etc目录中查找passwd开头的文件,并在文件中筛选test

find   -name   "[a-z][a-z][0–9][0–9].txt"              #查以两个小写字母和两个数字开头的txt文件

find /var/log -type f -mtime +7 -ok rm {}  ;        #查找/var/log目录中更改时间在7日以前的普通文件,并在删除之前询问它们

find    /home    -name   "*.t?t"              # *表示通配任意个字符  ?表示通配单个字符

find   /home  -name  "*.t?t"  |wc -l            #统计查找到的文件或目录数量

find   -name   "*.gz" -exec rm  {}  ;           #删除查找到的.gz文件,删除前不提示

find   -name   "*.gz" -ok  rm  {}  ;           ##删除查找到的.gz文件,删除前会提示

组合条件:与:-a  ,  或:-o ,  非: -not  、  !     默认参数见为“与”,或、非需指定

find -name "data*" ! -type f        #查找名字以data开头,文件类型不为文件

find -name "[A-D]*" -o -type d    #查找名字以A-D的大写字母开头,或文件类型为目录

君子务本,本立而道生
原文地址:https://www.cnblogs.com/00huajiang/p/11027213.html