1.按文件名查找
find ./ -name "文件名称" # 默认区分大小写,忽略大小写使用-iname
2.按文件大小查找:不支持小数如1.3M,单位可以使用G
find ./ -size +10M # 查找大于10M的文件
find ./ -size -10M # 查找小于10M的文件
find ./ -size 10M # 查找等于10M的文件
find ./ -size +10M -size -20M # 查找大于10M且小于20M的文件
find ./ -size +10M -o -size -5M # 查找大于10M或小于5M的文件
3.按文件修改时间查找:在企业中一般用于删除N天前的日志,atime为访问时间,ctime为属性改变时间
find ./ -mtime +30 # 查找修改时间为30天前的
find ./ -mtime -7 # 查找修改时间为7天内的
find ./ -mtime 1 # 查找修改时间为24小时前且48小时内的
find ./ -mtime 0 # 查找修改时间为24小时内的
4.按文件类型查找
find ./ -type f # 查找普通文件。d目录、l软链接、b块设备、c字节文件
find ./ ! -type f # 查找除了文件类型为普通文件的所有文件
5.按深度等级查找:需要放在第一个条件
find ./ -maxdepth 1 # 只查找当前目录,不查找当前目录的子目录。
6.按inode号查找
find ./ -inum inode号
7.按序列查找:find不支持{}
find ./ -name "[1-3].txt" # 查找文件名为1.txt到3.txt的文件
find ./ -name "[1-3][0-9].txt" # 查找文件名为10.txt到39.txt的文件,[]表示任意单个
find ./ -name "[10].txt" # 查找文件名为1.txt或0.txt的文件
注意
在企业中,如果服务器在对外提供服务,禁止从/查起。
find是从当前路径开始查起,不是只查当前路径
方法一:结合xargs
1.删除查找到的内容
find ./ -name "1.txt" | xargs rm
2.复制查找到的内容
find ./ -name "1.txt" | xargs -i cp {} /bak
3.移动查找到的内容
find ./ -name "1.txt" | xargs -i mv {} /tmp
4.查看查找到的内容
find ./ -name "1.txt" | xargs ls
5.打包查找到的内容
find ./ -name "*.txt" | xargs tar zcvf all.tar.gz
方法二:结合exec:\用于还原本义,将;转义为真正的普通字符分号
find ./ -name "1.txt" -exec rm {} \;
方法三:结合``或$():会先执行反引号或$()中的内容
rm -rf `find ./ -name "1.txt"`
rm -rf $(find ./ -name "1.txt")