find命令通过指定查询的条件和索引,把相符的文件或目录列出来。
2.find命令的使用方法
语法:
find [路径] [选项] [索引]
2.1 根据文件名
根据文件名查找文件,通配符需要用引号引起来。
查找 /tmp 目录下 wang开头的文件。
find /tmp -name "wang*"
2.2 根据文件类型
type:按文件类型查找。文件类型包括:b块设备。d目录。f一般文件。c字符文件。p管道文件。l链接文件。
查找 /tmp 目录下的普通文件
find /tmp -type f
2.3 根据时间
与天数有关的参数包括 atime ctime mtime
与分钟有关的参数包括 amin cmin min
atime (access time)访问时间 读取执行时更改。
ctime(change time)属性权限更改时间
mtime(modify time)内容更改时间 写入文件时更改。
以mtime为例。
-mtime n:意思就是在n天之内。
查找24小时内的文件
find /tmp -mtime 0
-mtime -n:意思就是在n天之内,含n天
找到三天和三天内的日志文件
find /var/log -mtime -3
-mtime +n:意思就是在n天之前,不含n天
删除30天以前的日志文件。
find /var/log -mtime +30 |xargs rm
-newer file:file为一个文件,列出比file新的文件
列出tmp目录下,创建修改file1之后的文件。
find /tmp -newer file1
2.3.1 数字和时间的关系
+4代表大于等于5天前的文件,
-4代表小于等于4天前的文件,
4代表4~5之间的文件。
2.4 根据用户和用户组
根据用户和用户组的权限查找
-uid n:n为用户的uid
在tmp目录下找出所有uid为500的文件。
find /tmp -uid 500
-username name :name为用户名
找出tmp目录下所有用户wang的文件。
find /tmp -username wang
-gid n:n为用户的gid
同上
-nouser :寻找文件的所有者不存在的文件
-nogroup: 寻找文件所属组不存在的文件
找到不正常的文件
find / -nouser
2.5 根据文件权限和大小
-size [+-] xx:查找比xx要大(+)或小(-)的文件。(c代表byte,k代表1024bytes)
查找tmp目录下比file文件大的文件。
find /tmp -size +file
-perm mode:查找文件权限刚好等于mode的文件,
文件权限为-rwsrwsret的文件
find / -perm 7777 -type f
-perm -mode:查找文件权限最少包括mode的文件,
查找rwxr--r--的文件,结果resr-xr-x的文件会被列出来。搜索的是0744 结果是4755
find / -perm -0744
-perm +mode:查找文件权限包含任mode的文件
包含s或t的都会被列出来。
find -perm +7000
2.6 根据inode号
-inum xxx:根据inode号查找inode号相同的文件。查找硬链接文件
查找出来1.txt的硬链接文件。
find /root/ -inum 33610734
3.find命令的特殊操作
3.1 -exec
-exec command : command为其他命令,exec后面可接其他命令来处理查询的结果。
在/tmp目录下查找文件类型为一般文件,文件名包含t的,文件大小要求大于1k切小于3k的文件,并使用ls -l 来查看其权限
find /tmp -type f -name t* -size +1k -size -3k -exec ls -l {}\;
这个命令的意思:前面的条件搜到的文件。交给-exec 后面的命令处理。{}代表前面搜索的结果。;有特殊意义,所以需要转义。
[root@www ~]# find /var/log/ -type f -mtime +10 -exec cp {} {}.tmp \;
[root@www ~]# find /var/log/ -name *.tmp -exec rm {} \;
在/var/log/目录下10天之前的文件,拷贝为文件名.tmp
在/var/log/目录下,查找文件后缀名为.tmp的文件。然后删除。
3.2 print
-print:将结果打印在屏幕上,这个操作是默认的。
3.3 xargx
把前面的结果作为参数,依次递交给后面的命令处理。
xargs命令详解-未连接
[root@www ~]# find /var/log/ -mtime +10 -type f |xargs -i cp {} {}.1
[root@www ~]# ls /var/log/*.1
/var/log/anaconda.ifcfg.log.1 /var/log/anaconda.yum.log.1
[root@www ~]# ls /var/log/*.1 |xargs rm -rf
[root@www ~]# ls /var/log/*.1
ls: 无法访问/var/log/*.1: 没有那个文件或目录
删除的时候不用-i选项。
原文地址:http://blog.51cto.com/11060853/2091962