find 命令
find 路径 查找条件 查找动作
(1)根据文件名或正则表达式匹配搜索
eg. find /home -name "*.txt" -print
iname表示忽略大小写
a.匹配2个条件
find /home \( -name "*.txt" -a -name "user.*" \) -print
b.匹配2个条件中的一个
find /home \( -name "*.txt" -o -name "user.*" \) -print
c.否定参数 !
eg. find . ! -name "*.txt" -print 匹配不以.txt结尾的文件
(2)根据文件类型搜索
eg.find . -type d -print
文件类型类型参数
普通文件f
符号连接l
目录d
字符设备c
块设备b
套接字s
Fifop
(3)根据文件时间进行搜索
三种时间戳
访问时间(-atime): 用户最近一次访问文件的时间
修改时间(-mtime): 文件内筒最后一次修改的时间
变化时间(-ctime): 文件元数据(metadata, 例如权限或所有权)最后一次改变的时间。
eg. find . -type f -atime -7 -print 最进7天内被访问的所有文件
find . -type f -atime 7 -print 恰好7天前被访问过的所有文件
find . -type f -atime +7 -print 访问时间超过7天
表示分钟的参数:
-amin: 访问时间
-mmin:修改时间
-cmin:变化时间
-newer选项
find . -type f -newer file.txt -print : 打印比file.txt修改时间更长的所有文件
(4)基于文件大小查找
find . -type f -size +2k :大于2K的文件
find . -type f -size 2k :大小等于2K的文件
find . -type f -size -2k :大小小于2K的文件爱你
常用单位:b(块), c(字节), w(字), k(KB), M(兆), G
(5)删除匹配的文件
-delete 可以用来删除匹配到的文件
find . -type f -name "*.txt" -delete
(5)基于文件权限和所有权查找
find . -type f -perm 644 -print :查找644权限文件
find . -type f -user(用户名或ID) mgx -print
(6)结合-exec 执行命令或动作
-exec选项
eg. find . -type f -user root -exec chown mgx {} \;
(7)结合xargs
eg. find . -type f -name "*.txt" | xargs rm -f
无法预测分割find命令输出结果的是'\n'还是' ';有时很多文件名包含空格符,而xargs则可能会误以为它们是定界符,eg.hell ta.txt
可能会被误认为是hell 和ta.txt.
因此,常使用-print0结合使用
eg. find . -type f -name "*.txt" -print0 | xargs rm -f