1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| find dir -name filename : 在目录下查找文件名为filename的文件
-name:文件名称,例如:find . -name "*.log"
-size:文件大小,以block为单位,1block=512k
-size +204800:大于100M
-size -204800:小于100M
-user:文件所有者
-ctime:按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-cmin:同上,分钟
-mtime:按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-mmin:同上,分钟
-atime:按文件访问时间来查找文件
-amin:同上,分钟
-type b/d/c/p/l/f: 查是块设备、目录、字符设备、管道、符号链接、普通文件
-empty:查找在系统中为空的文件或者文件夹
-exec commond {} \; : 将查找到的路径作为commond的参数,并执行,这里命令最后的 \; 是固定搭配,可以替换为 + : -exec commond {} +
find . -name .svn -exec rm -rf {} \; 类似于 : find . -name .svn | xargs rm -rf
find . -name "*.log" -exec cp '{}' ./dir ';' : 将当前目录下的以.log结尾的文件拷贝到./dir下, 类似于find . -name "*.log" | xargs -n1 -i cp {} ./dir -n[num] : 执行命令时,一次提供几个参数,这里表示,每次传递给cp一个参数
清理30天前的日志文件: find logdir -name "*.log*" -mtime +30 -type f | xargs rm -f find . -name "*.log*" -mtime +30 -type f -exec rm -f {} \;
-maxdepth:查找目录最大深度,默认是全部查找
例如:find -maxdepth 2 -name "*${filename}*" -exec cp {} $newfilename \;
-a:and
-o:or
例子:查询大于100M并且所有者为hanqf的文件并将其删除
find /etc -size +204800 -a -user hanqf -exec rm -rf {} \;
!:不等于,不包含,例如:find . ! -type d,查找类型不是目录的文件
|