find:用于在目录层次结构中搜索文件。
简介:find [options] [path…] [expression]
expression:[options] [tests] [actions]
tests:测试条件
-name pattern:根据文件名查找文件。
-iname pattern:与-name类似,不区分大小写。
-regex pattern:通过正则表达式匹配文件的完整路径名称。
-user uname:查找属主为uname的文件,可使用uid。
-group gname:查找属组为gname的文件,可使用gid。
-nouser:查找没有属主的文件。
-nogroup:查找没有属组的文件。
-type c:根据文件的类型进行查找。
b:块设备
c:字符设备
d:目录
p:管道
f:常规文件
l:符号链接
s:套接字
-size [+|-]n:指定查找文件的大小,常用单位:k,M,G。
-atime [+|-]n:以天为单位,指定查找文件的访问时间。
-mtime [+|-]n:以天为单位,指定查找文件的修改时间。
-ctime [+|-]n:以天为单位,指定查找文件的改变时间。
-amin [+|-]n:以分钟为单位,指定查找文件的访问时间。
-mmin [+|-]n:以分钟为单位,指定查找文件的修改时间。
-cmin [+|-]n:以分钟为单位,指定查找文件的改变时间。
-perm [/|-]mode:查找指定权限的文件。
mode:精确权限匹配。
/mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足,9位权限之间存在“或”关系。
-mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足,9位权限之间存在“与”关系。
actions:处理动作
-print:将查找到的文件名输出至标准输出,为默认动作。
-ls:在标准输出上以ls -dils格式列出当前文件。
-delete:删除文件。
-fls file:类似-ls,只是将内容输出到指定文件中。
-exec command {} ;:将查找到的文件做为参数,执行command处的命令。
-ok command {} ;:和-exec类似,执行命令前提示用户。
operators:运算符
! expr:非运算,如果expr为真,则为假。
expr1 -a expr2:与运算,expr1和expr2都为真,则为真,默认运算方式。
expr1 -o expr2:或运算,expr1或expr2为真,则为真。
示例
find /tmp -name core -type f -print | xargs /bin/rm -f
查找/tmp目录下文件名为core的普通文件并删除。
find . -type f -exec file {} ;
查找当前目录下的所有普通文件并对找到的每个文件执行file命令。
find $HOME -mtime 0
查找用户家目录下1天之内修改过的文件。
find . -perm 664
查找当前目录下权限为664的所有文件。
find . -perm -664
查找当前目录下权限大于等于664的所有文件。
find . -perm /222
查找当前目录下属主、属组和其他人中任一用户有写入权限的文件。
find . -perm -444 -perm /222 ! -perm /111
查找当前目录下所有用户都有读权限,属主、属组和其他人中任一用户有写权限,所有人都没有执行权限的文件。