find 命令使用总结

find 是最常见和最强大的查找命令,直接查找磁盘,缺点耗时长。命令格式如下:
find [path...] [expression]
The expression is made up of :
options(which affect overall operation rather than the processing of a specific file, and always return true)tests(which return a true or false value)actions(which have side effects and return a true or false value)
all separated by operators.
选项
常用选项:
-maxdepth 1只查找当前目录
条件
常用条件:
-name名称查找(例如:find ./ -name 'struts*')-type类型查找d目录类型f常规文件类型l软链类型- ……
-user设定所属用户的名称-group设定所属用户组的名称-perm设定权限-regex使用正则表达式进行匹配-size表示文件大小-empty空文件或空目录-atime / -aminFile was last accessed n*24 hours/n minutes ago.-ctime / -cminFile’s status was last changed n*24hours/n minutes ago.-mtime / -mminFile’s data was last modified n*24hours/n minutes ago.
动作
常用动作:
-print输出结果(默认动作)-ls输出详情-delete执行删除-exec执行指定命令
操作符
操作符用于提高表达式的优先级,下列操作符的优先级以倒序排列:
( expr )强制最高优先级! expr求反操作expr1 expr2(orexpr1 -a expr2) 求与操作expr1 -o expr2求或操作
例子
按文件名查找
查找当前目录树中,名字以 fileA_ 或 fileB_ 开头的所有文件:
1 | $ find . -name 'fileA_*' -o -name 'fileB_*' |
查找当前目录树中的 foo.cpp 文件,查找过程中排查掉 .svn 子目录树:
1 | $ find . -name 'foo.cpp' '!' -path '.svn' |
查找当前目录树中,以 my 开头的常规文件,并输出文件详情:
1 | $ find . -name 'my*' -type f -ls |
按大小查找
查找大小在 100k~500k 的文件:
1 | $ find . -size +100k -a -size -500k |
查找空文件:
1 | $ find . -size 0k |
查找非空文件:
1 | $ find . ! -size 0k |
删除文件或目录
删除空文件或空目录:
1 | $ find . -type f -empty -delete |
根据 inode 号删除乱码文件::
1 | $ find . -inum <inode-number> -exec rm -i {} \; |
或
1 | $ rm `find ./ -inum <inode-number>` |
