一、命令详解
【功能说明】
find命令用于查找目录下的文件,同时也可以调用其他命令执行相应的操作。
【语法格式】
[root@7bfe451a2fe1 /]# find --help
Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
说明:
- 语法格式可分为这4个元素:find [选项] [路径] [操作语句]
- 注意find命令以及后面的选项和路径、操作语句,每个元素之间都至少要有一个空格
- 注意各元素的先后顺序
二、使用范例
find查找条件
- 文件名
- 文件的类型
- 文件的权限
- 所属的用户和组
- 文件的时间
- 文件的大小
2.1 根据文件名查找
在/home目录下递归查找py结尾的文件
find /home -type f -name "*.py"
# -name参数只支持* ? []这三个通配符
在当前目录及子目录下查找1.pcap的文件
find . -name 1.pcap
在/usr目录下递归查找名为which的文件
find /usr -name which
2.2 根据文件的时间查找
查找2天内受到访问的文件
find . -atime -2
# -atime 按照文件的访问时间来查找文件,单位为天
# -2 表示时间距现在2天内
# +2 表示时间距现在2天前
# 2 表示距现在第2天
查找最近5分钟内被修改过的文件
find / -mmin -5
# -mmin 按照文件的修改时间来查找文件,单位为分钟
查找更改时间比file1.txt新的文件
find . -newer file1.txt
查找更改时间比file1.txt新但比file2.txt旧的文件
find . -newer file1.txt ! -newer file2.txt
在目录中查找更改时间在3天前的文件,并删除它们
find . -type f -mtime +3 -exec rm {} \;
在 /var/log目录中查找所有文件名以.log结尾,更新时间在3天以前的文件,并且删除它们
2.3 根据文件的类型查找
在当前目录下查找一个名为douyin的目录
find . -type d -iname douyin
# d表示目录
# f表示文件
2.4 根据文件的权限查找
查找权限为644的文件
find /etc/ -type f -perm 0644 -print
2.5 根据文件的大小查找
从根目录查找大小为20M-30M的文件
find / -size +20M -size -30M
2.6 根据用户和组查找
查找用户为nobody的所有文件
find / -user nobody
查找没有对应任何用户的文件,即查找那些属主账户被删除的文件
find . -nouser
2.7 根据正则表达式查找
【正则表达式语法】
find paathname -regextype "type" -regex "pattern"
# 正则表达式的类型默认为emacs
2.8 结合xargs与exec使用
查找所有exe文件并删除
find . -type f -name "*.exe" -exec rm -f {} \;
2.9 其他
在当前用户的家目录下,查找以wordpress开头的文件,并忽略大小写
find ~ -iname "wordpress*"
查找/var/www/html目录下非html后缀的文件
find /var/www/html ! -name "*.html"
# ! 表示反向查找,注意其位置
在/data目录下查找my.cnf并忽略/data/logs与/data/data目录
find /data \(-path /data/logs -o -path /data/data\) -prune -o -print
# -a 和 -o 类似于 and 和 or
# -path "/data/dir1" -prune -o -print
# 相当于 -path "/data/dir1" -a -prune -o -print
在/home一级目录下,不输出名字为点的行
find /home -maxdepth 1 -type d ! -name '.'
三、扩展知识
将找到的文件移到指定位置的几种方法
find命令结合exec和xargs使用的区别
四、命令总结
好记性不如烂笔头,用来备查