find命令详解

 
功能说明:查找文件或目录。
语  法:find [目录...][-amin <分钟>][-anewer <参考文件或目录>][-atime <24小时数>][-cmin <分钟>][-cnewer <参考文件或目录>][-ctime <24小时数>][-daystart][-depth][-empty][-exec <执行指令>][-false][-fls <列表文件>][-follow][-fprint <列表文件>][-fprint0 <列表文件>][-fprintf <列表文件><输出格式>][-fstype <文件系统类型>][-gid <群组识别码>][-group <群组名称>][-help][-ilname <范本样式>][-iname <范本样式>][-inum ][-ipath <范本样式>][-iregex <范本样式>][-links <连接数目>][-lname <范本样式>][-ls][-maxdepth <目录层级>][-mindepth <目录层级>][-mmin <分钟>][-mount] 
[-mtime <24小时数>][-name <范本样式>][-newer <参考文件或目录>][-nogroup][noleaf] [-nouser][-ok <执行指令>][-path <范本样式>][-perm <权限数值>][-print][-print0][-printf <输出格式>][-prune][-regex <范本样式>][-size <文件大小>][-true][-type <文件类型>][-uid <用户识别码>][-used <日数>][-user <拥有者名称>][-version][-xdev][-xtype <文件类型>]

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

参  数:
 -amin<分钟>  查找在指定时间曾被存取过的文件或目录,单位以分钟计算。 
 -anewer<参考文件或目录>  查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录。 
 -atime<24小时数>  查找在指定时间曾被存取过的文件或目录,单位以24小时计算。 
 -cmin<分钟>  查找在指定时间状态被更改的文件或目录。 
 -cnewer<参考文件或目录>  查找其状态更改时间较指定文件或目录的状态更改时间更接近现在的文件或目录。 
 -ctime<24小时数>  查找在指定时间状态被更改的文件或目录,单位以24小时计算。 
 -daystart  以本日“开始”计算时间。 
 -depth  从指定目录下最深层的子目录开始查找。 
 -empty  寻找文件大小为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编号的文件或目录。 
 -ipath<范本样式>  此参数的效果和指定"-ipath"参数类似,但忽略字符大小写的差别。 
 -iregex<范本样式>  此参数的效果和指定"-regexe"参数类似,但忽略字符大小写的差别。 
 -links<连接数目>  查找符合指定的硬连接数目的文件或目录。 
 -lname<范本样式>  指定字符串作为寻找符号连接的范本样式。 
 -ls  假设find指令的回传值为true,就将文件或目录名称列出到标准输出。 
 -maxdepth<目录层级>  设置最大目录层级。 
 -mindepth<目录层级>  设置最小目录层级。 
 -mmin<分钟>  查找在指定时间曾被更改过的文件或目录,单位以分钟计算。 
 -mount  此参数的效果和指定"-xdev"相同。 
 -mtime<24小时数>  查找在指定时间曾被更改过的文件或目录,单位以24小时计算。 
 -name<范本样式>  指定字符串作为寻找文件或目录的范本样式。 
 -newer<参考文件或目录>  查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录。 
 -nogroup  找出不属于本地主机群组识别码的文件或目录。 
 -noleaf  不去考虑目录至少需拥有两个硬连接存在。 
 -nouser  找出不属于本地主机用户识别码的文件或目录。 
 -ok<执行指令>  此参数的效果和指定"-exec"参数类似,但在执行指令之前会先询问用户,若回答"n"或"N",则放弃执行指令。 
 -path<范本样式>  指定字符串作为寻找目录的范本样式。 
 -perm<权限数值>  查找符合指定的权限数值的文件或目录。 
 -print  假设find指令的回传值为true,就将文件或目录名称列出到标准输出。格式为每行一个名称。
 -print0  假设find指令的回传值为true,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行。 
 -printf<输出格式>  假设find指令的回传值为true,就将文件或目录名称列出到标准输出。格式可以自行指定。 
 -prune  不寻找字符串作为寻找文件或目录的范本样式。 
 -regex <范本样式>  指定正则表达式作为寻找文件或目录的范本样式。 
 -size<文件大小>  查找符合指定的文件大小的文件。 
 -true  将find指令的回传值皆设为true。 
 -type<文件类型>  只寻找符合指定的文件类型的文件。 
 -uid<用户识别码>  查找符合指定的用户识别码的文件或目录。 
 -used<日数>  查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算。 
 -user<拥有者名称>  查找符合指定的拥有者名称的文件或目录。 
 -version或--version  显示版本信息。 
 -xdev  将范围局限在先行的文件系统中。 
 -xtype<文件类型>  此参数的效果和指定"-type"参数类似,差别在于它针对符号连接检查。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
用find查找文件时要避开某一个目录(这个目录包含在所要搜索的路径中)的方法:
方法1:
find /  -path "/etc" -prune -o -name passwd -print
方法2:
find / -wholename "/etc" -prune -o -name passwd -print
针对文件模式"/etc"使用 -wholename 测试,如果该模式已找到,-prune 可防止 find 下到该目录中。布尔类型“-o”使 find 可以针对其他目录处理该命令的其余部分。由于每个表达式之间有一个假设的隐式 and 运算符 (-a),因此,如果左侧的表达式计算结果为 false,and 之后的表达式将不进行计算;因此需要 -o 运算符。find 还支持布尔类型 -not、!,就像使用括号
用find查找文件时避开多一个目录
find / \( -path /etc -o -path /usr \) -prune -o -name passwd -print (括号与-path之间有空格,这点要注意,还有的就是目录不能写成/etc/只能写成/etc,记住,不要加多一个斜杠)

只在当前文件系统查找
find / -mount -name passwd -print
find / -xdev -name passwd -print
find还可以用-a(and 与),-o(or 或),!(非),连接多个匹配选项,达到逻辑判断的目的。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
find -name april* 在当前目录下查找以april开头的文件
find -name april* fprint filename 在当前目录下查找以april开头的文件,并把结果输出到filename中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -fstype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -fstype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2 在/home下查最近两天内改动过的文件
find /home -atime -1 查1天之内被访问过的文件
find /home -mmin +60 在/home下查60分钟前改动过的文件
find /home -amin +30 查最近30分钟前被存取过的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查访问时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home -user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \;
find /tmp -name tmp.txt -ok rm {} \;
 

你可能感兴趣的:(find命令详解)