find:是查找命令
locate:也用于查找,在locate库中查找、文件索引
具有快速、非实时(查找结果未必精确)、非精确匹配
相对于locate,find有如下特征:
查找时,查找结果略慢、实时、精确查找 功能强大、可实现查找到文件后进行额外处理 查找条件非常细致find 选项 查找路径 查找条件 [动作]
find /path/to/somdwhere createia [action]
查找路径:默认为当前目录
查找条件:默认为指定目录所有文件 动作:默认为显示eg:
find /etc -name 'passwd'遍历
条件查找:
按文件名称查找: -name ' filename':glob:通配符
* 表示任意长度的任意字符 ?任意单个字符 [] 匹配指定范围内的任意单个字符 -iname 'filename' -empty:查找所有的空文件或空目录-user USERNAME: 用户名
-group GRPNAME:组名-uid UID:用户ID
-gid GID:组IDfind /tmp -user
-nouser:查找无属主的文件
-nogroup:无属组 组合查找条件: -a::与 -o:或 -not或!:非 如:find /tmp ! -uesr hadoop -a ! -empty 文件类型: -type:f :普通文件类型
d :目录 l : 链接文件 p :管道 b :块设备c :字符设备
文件大小:-size [+|-] 数值 unit(单位)
unit:K,G,M所有不足一个单位的,视为一个单位
如查找2k的文件,会显示1.2k等,在大于1k小于2k之间,(1k 2k)
根据时间来查找:
时间为分钟:
amin [+-] # :( #是数字)查找最近多少分钟访问过的文件
mmin [+|-] # :查找最近多少分钟修改过的文件 cmin [+|-] # :查找最近多少分钟改变过的文件时间为天:
atime:访问时间 mtime:修改时间 ctime:改变时间find /etc -mtime -1 最近一天内/etc下改过的文件
如何根据权限来查找:-perm mode: 精确匹配指定权限
-perm -mode:所有的权限都必须匹配,所查找的对应位必须包含 all,表示与关系 -perm /mode:有一个符号条件就行,任何一个都可以,any 表示或关系 只要有一位权限符号条件即可。每一位,而不是每一类ls -ldh `find /etc -perm 755` 匹配权限为755包含高于755的,如777
find ./ -perm -222 查找有写权限的所有文件find ./ -perm -002 其他用户有写权限的文件
find ./ -perm /222 查找任意有写权限的文件
动作:-print:显示
-ls:详细显示 -exec:直接执行所有命令,不提示 -exec COMMAND { } \; -ok:执行命令时有提示-exec mv {} {}.old\; 找到符合的,在该位后加.old