参考:http://bbs.linuxtone.org/thread-1696-1-1.html
1、按文件名查找
find 目录路径 -name 文件名|通配符
2、按大小查找
find 目录路径 -size 1500c 查找文件大小为1500bytes的文件,字符c 表示单位是bytes;
find 目录路径 -size +10000c "+"表示系统只列出大于指定大小的文件,“-”表示小于
find 目录路径 -empty 查找系统中为空的文件[夹]
size:表示文件大小,+表示大于某个数,-表示小于某个数。c表示单位是字节,你可以将c换成k,M,G
3、按时间查找
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 # 查找在系统中最后24小时里修改过的文件
find / -cmin -5 # 查找在系统中最后5分钟里被改变状态的文件
find / -ctime -1 # 查找在系统中最后24小时里被改变状态的文件
访问过用amin,修改过用mmin,文件状态改变过用cmin
精确到分钟的用amin,mmin,cmin,精确到天的用atime,mtime,ctime
在5分钟之内的用-5,在5分钟以前(以上)的用+5
4、按用户查找:
find / -user fred # 查找在系统中属于FRED这个用户的文件
find / -group cat # 查找在系统中属于 groupcat的文件
find / -nouser # 查找在系统中属于作废用户的文件
find / -not -user reda #查找在系统中不属于FRED这个用户的文件
find / -gid 501 #查找系统中属于组id为501的文件
find / -false #查找系统中总是错误的文件
find / -type b
find / -type b
文件类型:
b 块(缓冲)设备
c 字符设备
d 目录
p 有名管道(FIFO)
f 规则文件
l 符号链结
s SOCKET
5、通过文件特征进行查找
-false 查找系统中总是错误的文件
-fstype type 查找系统中存在于指定文件系统的文件,例如:ext3
-depth 通过文件深度进行查找
-follow 根据软连接方式进行查找(默认情况下对连接不进行查找)
6、组合方式:
find /tmp -size +10000000c -and -mtime +2 # -and
find / -user fred -or -user george # -or 在/tmp目录中查找属于fred或者george这两个用户的文件
find /tmp ! -user panda // ! 在/tmp目录中查找所有不属于panda的文件
另一种写法:
find /tmp ! \( -user 0 -o -user 500 -o -user 501 \) -exec ls -l {} \;
find /data/dbk/ ! -type b -ctime +5 \( ! -iname ".*" ! -iname "dbk" \) -exec rm -rf {} \; (-iname 忽略大小写)
find / -name "httpd.conf" -ls #查找并显示文件的方法
find . -name * -exec rm -f {} \;
-exec 参数后面跟的是 command命令,注意如下几点:
command命令的终止,使用 ';' (分号)来判定,在后面必须有一个 ';'
';'需要用'\'来转义 ,所以命令整体形式为: -exec rm -f {} \;
'{}',使用{}来表示文件名,也就是find前面处理过程中过滤出来的文件,用于command命令进行处理
find / -exec grep "Hello" {} \;查找所有包含 hello 字符的文件
7、find 与exec xargs 是常用组合
在使用find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就
会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去
在有些系统中,使用-exec选项会为处理每一个匹配到的文件而发起一个相应的进程,并非将匹配到的文件全部作为参数一次执行;这样在有些情况下就会出现进程过多,系统性能下降的问题
因而效率不高;而使用xargs命令则只有一个进程。
find . -name \* -type f -print | xargs grep "hostnames" \用来取消find命令中的*在shell中的特殊含义。
在shell中用任何方式删除文件之前,应当先查看相应的文件,一定要小心!
可以使用安全模式:
-ok command; 给用户命令执行操作,根据用户的Y 确认输入执行
find . -name "*.conf" -mtime +5 -ok rm { } \;
8、按权限查找
find ~ -type f -perm 4755 -print #查找$HOME目录下suid位被设置,文件属性为755的文件打印出来。
find . -perm -007 -print
9、忽略某个目录
find /apps -name "/apps/bin" -prune -o -print 在/apps目录下查找文件,但不希望在/apps/bin目录下查找
10、查找比某个文件新或旧的文件
find . -newer age.awk ! -newer belts.awk -exec ls -l {} \;
find命令能够查找更改时间比文件age.awk新但比文件belts.awk旧的文件: