描述:从指定的起始目录开始,递归的查找其各个子目录,查找满足条件的文件并对之采取相关的操作。
用法:find 起始目录 查找条件 执行操作
查找条件:
-name filename 查找名为filename的文件
-iname 不区分大小写
-perm 按执行权限查找
-user 按文件属主来查找
-group 按组来查找
-uid n 查找用户UID为n的所有文件;
-gid n 查找组GID为n的所有文件;
-empty 查找空文件
-mtime -n +n n 按文件更改时间来查找文件,-n指n天以内,+n指n天以前,n指n天以前的一天之内
-atime -n +n n 按文件访问时间来查找文件
-ctime -n +n n 按文件创建时间来查找文件
-amin n 查找n分钟前被访问的文件;注意:-n表示文件被访问时间距现在n分钟以内,+n表示文件被访问时间距现在n分钟以前;
-cmin n 查找n分钟前文件属性被修改
-mmin n 查找n分钟前文件内容被修改
-nogrounp 查无有效属组的文件,即在/etc/group中不存在
-nouser 查无有效属组的文件,即在/etc/passwd中不存在
-newer f1 !f2 查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f 查块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] 查长度为n块[或n字节]的文件
-depth 使查完本目录后再进入子目录
-fstype 查找位于某一文件系统中的文件,这些文件系统类型通常在/etc/fstab中
-mount 查文件时不跨越文件系统mount点
-follow 如果遇到符号链接文件,就跟踪链接所指的文件
-cpio 对匹配的文件使用cpio命令,将他们备份到磁带当中
-prune 忽略某个目录
-maxdepth 允许制定find搜索深入到目录树的哪一级别
-mindepth 允许制定find搜索深入到目录树的哪一级别
执行操作:
-print: find命令将匹配的文件输出到标准输出
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令形 式为‘command' { } \;注意{ }和\;之间的空格。
-ok: 和-exec相同,在操作前要询问用户
逻辑运算符:
-a (and)
-o (or)
! (not)
示例:1. 查找/home(包含子目录)目录中,在24小时内被访问过的文件。
[root@share19 ~]# find /home -atime 0
2.查找/home(包含子目录)目录中,拥有者和用户组不存在的文件,并执行删除操作。
[root@share19 ~]# find /home -nouser -a -nogroup -exec rm -rf {} \;
[root@share19 ~]# find /home -nouser -a -nogroup -ok rm -rf{} \;
3.查找test目录中大小为零的文件并把它们移动到/tmp/zerobyte目录中。
[root@share19 ~]# find /test -type f -size 0 -exec mv {} /tmp/zerobyte \;
4.查找当前目录中权限为777的文件,并列出详细列表。
[root@share19 ~]# find . -type f -perm 777 -ls
5.xargs命令对匹配结果分批处理并只产生一个进程
比较一下两个命令的执行效率
[root@share19 ~]# find / -type f -exec ls -l {} \;
[root@share19 ~]# find / -type f |xargs ls -l
来源:oschina
链接:https://my.oschina.net/u/2711763/blog/687661