find命令格式与用法

find:

功能说明:查找文件或目录(实时查找)。

补充说明:find指令用于查找符合条件的文件。任何位于参数之前的字符串都将被视为欲查找的目录。


参  数:


 -amin<分钟>  查找在指定时间曾被存取过的文件或目录,单位以分钟计算。 
 -anewer<参考文件或目录>  查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录。 
 -atime<24小时数>  查找在指定时间曾被存取过的文件或目录,单位以24小时计算。 
 -cmin<分钟>  查找在指定时间之时被更改的文件或目录。 
 -cnewer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。 
 -ctime<24小时数>  查找在指定时间之时被更改的文件或目录,单位以24小时计算。 
 -daystart  从本日开始计算时间。 
 -depth  从指定目录下最深层的子目录开始查找。 
 -expty  寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录。 
 -exec<执行指令>  假设find指令的回传值为True,就执行该指令。 
 -false  将find指令的回传值皆设为False。 
 -fls<列表文件>  此参数的效果和指定"-ls"参数类似,但会把结果保存为指定的列表文件。 
 -follow  排除符号连接。 
 -fprint<列表文件>  此参数的效果和指定"-print"参数类似,但会把结果保存成指定的列表文件。 
 -fprint0<列表文件>  此参数的效果和指定"-print0"参数类似,但会把结果保存成指定的列表文件。 
 -fprintf<列表文件><输出格式>  此参数的效果和指定"-printf"参数类似,但会把结果保存成指定的列表文件。 
 -fstype<文件系统类型>  只寻找该文件系统类型下的文件或目录。 
 -gid<群组识别码>  查找符合指定之群组识别码的文件或目录。 
 -group<群组名称>  查找符合指定之群组名称的文件或目录。 
 -help或--help  在线帮助。 
 -ilname<范本样式>  此参数的效果和指定"-lname"参数类似,但忽略字符大小写的差别。 
 -iname<范本样式>  此参数的效果和指定"-name"参数类似,但忽略字符大小写的差别。 
 -inum<inode编号>  查找符合指定的inode编号的文件或目录。 
 -ipath<范本样式>  此参数的效果和指定"-ipath"参数类似,但忽略字符大小写的差别。 
 -iregex<范本样式>  此参数的效果和指定"-regexe"参数类似,但忽略字符大小写的差别。 
 -links<连接数目>  查找符合指定的硬连接数目的文件或目录。 
 -iname<范本样式>  指定字符串作为寻找符号连接的范本样式。 
 -ls  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。 
 -maxdepth<目录层级>  设置最大目录层级。 
 -mindepth<目录层级>  设置最小目录层级。 
 -mmin<分钟>  查找在指定时间曾被更改过的文件或目录,单位以分钟计算。 
 -mount  此参数的效果和指定"-xdev"相同。 
 -mtime<24小时数>  查找在指定时间曾被更改过的文件或目录,单位以24小时计算。 
 -name<范本样式>  指定字符串作为寻找文件或目录的范本样式。 
 -newer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。 
 -nogroup  找出不属于本地主机群组识别码的文件或目录。 
 -noleaf  不去考虑目录至少需拥有两个硬连接存在。 
 -nouser  找出不属于本地主机用户识别码的文件或目录。 
 -ok<执行指令>  此参数的效果和指定"-exec"参数类似,但在执行指令之前会先询问用户,若回答"y"或"Y",则放弃执行指令。 
 -path<范本样式>  指定字符串作为寻找目录的范本样式。 
 -perm<权限数值>  查找符合指定的权限数值的文件或目录。 
 -print  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称之前皆有"./"字符串。 
 -print0  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行。 
 -printf<输出格式>  假设find指令的回传值为True,就将文件或目录名称列出到标准输出。格式可以自行指定。 
 -prune  不寻找字符串作为寻找文件或目录的范本样式。 
 -regex<范本样式>  指定字符串作为寻找文件或目录的范本样式。 
 -size<文件大小>  查找符合指定的文件大小的文件。 
 -true  将find指令的回传值皆设为True。 
 -typ<文件类型>  只寻找符合指定的文件类型的文件。 
 -uid<用户识别码>  查找符合指定的用户识别码的文件或目录。 
 -used<日数>  查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算。 
 -user<拥有者名称>  查找符合指定的拥有者名称的文件或目录。 
 -version或--version  显示版本信息。 
 -xdev  将范围局限在先行的文件系统中。 


find用法实例:


查找条件:

根据文件名查找:

-name"文件名称":支持使用glob

*, ?, [], [^] 

例子 find /etc/  -name

-iname "文件名称":不区分字母大小写

wKiom1bjffTTKxCsAABuP1f_IoU689.jpg

根据属主、属组查找:

-user USERNAME:查找属主为指定用户的文件;

wKiom1bjfvniuHAnAACEjgfCBt8476.jpg

group GRPNAME: 查找属组为指定组的文件;

wKiom1bjfyajqF75AACRdxMVJEQ819.jpg

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

wKioL1bjgBWx_UvIAACPhebPbas382.jpg

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

wKiom1bjf93DGbycAAB3uFSEhIk556.jpg

-nouser:查找没有属主的文件;

-nogroup:查找没有属组的文件;

wKioL1bjgNPAULFTAABIIdMlkno691.jpg

根据文件类型查找:

-type TYPE:

f: 普通文件

wKioL1bjgTmB1y76AABfHGNshFc394.jpg

d: 目录文件

wKiom1bjgOay8PBhAAB0Adkox5E071.jpg

l: 符号链接文件

wKioL1bjgZ7TdQ5XAACETy3O3i4911.jpg

s:套接字文件

wKiom1bjgT-TiuIRAAA6jQQR25g978.jpg

b: 块设备文件

wKioL1bjgeGg9c8LAABc7wAcA0c216.jpg

c: 字符设备文件

wKioL1bjgf-D7rAsAABbxFG4Gk4006.jpg

p: 管道文件

wKiom1bjgZSh0wzzAABBTyU6gMk691.jpg

组合条件:

与:-a

或:-o

非:-not, !

!A -a !B = !(A -o B)

!A -o !B = !(A -a B)

wKiom1bjhXWSnySzAABNYbgCmP8808.jpg

找出/tmp目录下,属主不是root,且文件名不是fstab的文件;

find /tmp \( -not -user root -a -not -name 'fstab' \) -ls

find /tmp -not \( -user root -o -name 'fstab' \) -ls

wKioL1bjgkuA0zR7AADyskZe7HI891.jpg

根据文件大小来查找:

-size [+|-]#UNIT

常用单位:k, M, G

wKioL1bjg4_CGL-5AACqzLsHMkY114.jpg

根据时间戳:

以“天”为单位;

-atime [+|-]

-mtime

-ctime

wKioL1bjguiACagTAABizILfLgo123.jpg

根据权限查找:

-perm [/|-]MODE

MODE: 精确权限匹配

/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可;

-MODE:每一类对象都必须同时拥有为其指定的权限标准;

wKioL1bjhOCyG_RRAABc9w5CZTg176.jpg


练习:

1、查找/var目录下属主为root,且属组为mail的所有文件或目录;

# find /var -user root -group mail

wKiom1bjeobQt3RaAAA8rW6Bm6o033.jpg

2、查找/usr目录下不属于root、bin或mageedu的所有文件或目录;

# find /usr -not -user root -a -not -user bin -a -not -user mageedu

# find /usr -not \( -user root -o -user bin -o -user mageedu \)

wKiom1bjesTQuCP0AACXTQ03hoU590.jpg

3、查找/etc目录下最周一周内其内容修改过,同时属主不为root,也不是hadoop的文件或目录;

# find /etc -mtime -7 -a -not -user root -a -not -user hadoop

# find /etc/ -mtime -7 -a -not \( -user root -o -user hadoop \)

wKioL1bje7WzFMS5AABNYbgCmP8663.jpg

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件或目录;

# find / -nouser -a -nogroup -a -atime -7

wKioL1bjfPfy8ADFAAHs6goAPWM017.jpg

5、查找/etc目录下大于1M且类型为普通文件的所有文件;

# find /etc -size +1M -type f

wKioL1bjfSaip93-AABpW3ERLqw344.jpg


6、查找/etc目录下所有用户都没有写权限的文件;

# find /etc -not -perm /222

wKiom1bjfMWR4HpJAAFUNRp13WQ405.jpg

7、查找/etc目录下至少有一类用户没有执行权限的文件;

# find /etc -not -perm -111

wKioL1bjfcXgoLM2AAAbR0bmWCo072.jpgwKiom1bjfT-jhBYbAADVeHMdcyU127.jpg

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件;

# find /etc/init.d -perm -113

wKiom1bjfW3CLXU4AAAvo-mBmts716.jpg