[Linux] find详解
语法
find path -option [ -print ] [ -exec -ok command ] {} \;
参数说明 :
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command' { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。-name filename #查找名为filename的文件
常用opt
-maxdepth level 最大目录深度,指定目录为第1级
-mindepth level 最小搜索目录深度
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-exec : find . -type f -exec ls -l {} \;
-type
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
-atime n
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-depth #使查找在进入子目录前先行查找完本目录
-exec : find . -type f -exec ls -l {} \;
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-fstype #查更改时间比f1新但比f2旧的文件
-mount #查文件时不跨越文件系统mount点
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-perm #按执行权限来查找
-prune #忽略某个目录
-size n[c] #查长度为n块[或n字节]的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-user username #按文件属主来查找
实例一:查找tmp目录下所有txt 文件
find /tmp -type f -name "*.txt"
实例二:查找tmp目录7天以前的大于1m的文件
find /tmp -type f -mtime +7 -size +1M
实例三:将目录下7天之前的日志删除
find /data/logs/ -type f -mtime +7 | xargs rm -f
find /data/logs/ -type f -mtime +7 -exec rm -f {} \;
rm -f `find /data/logs/ -type f -mtime +7 `