find命令是Linux系统中最强大、最灵活的文件查找工具之一。它可以基于多种条件(如文件名、类型、大小、修改时间等)在目录树中查找文件,并执行相应操作。
find [路径] [选项] [表达式]
# 在当前目录及其子目录中查找名为filename的文件
find . -name "filename"
# 不区分大小写查找
find /path -iname "filename"
# 使用通配符查找
find /home -name "*.txt"
# 查找普通文件
find /var -type f
# 查找目录
find /etc -type d
# 查找符号链接
find /usr -type l
# 查找大于10MB的文件
find / -size +10M
# 查找小于1KB的文件
find . -size -1k
# 查找等于50字节的文件
find ~ -size 50c
# 查找7天内修改过的文件
find /var/log -mtime -7
# 查找30天前访问过的文件
find /home -atime +30
# 查找24小时内状态改变的文件
find /etc -ctime -1
# 查找权限为644的文件
find . -perm 644
# 查找可执行文件
find /usr/bin -perm /a=x
# 查找SUID权限文件
find / -perm /4000
# 查找属于用户user的文件
find /home -user user
# 查找属于组group的文件
find /var -group group
# 查找名为config且大于1MB的文件
find /etc -name "config" -size +1M
# 查找30天前修改过的日志文件
find /var/log -name "*.log" -mtime +30
# 查找非root用户拥有的可执行文件
find /usr/bin ! -user root -perm /a=x
# 删除匹配文件
find /tmp -name "*.tmp" -delete
# 显示详细文件信息
find ~ -name "*.jpg" -ls
# 对每个匹配文件执行命令
find /var/www -name "*.php" -exec chmod 644 {} \;
# 最多查找3层子目录
find / -maxdepth 3 -name "file"
# 从第2层开始查找
find / -mindepth 2 -name "pattern"
find /var/log -name "*.log" -size +10M -exec gzip {} \;
find . -type f -exec md5sum {} + | sort | uniq -w32 -dD
find /tmp -empty
find . -type f -printf '%T@ %p\n' | sort -n | tail -5
find命令功能强大,参数众多,可以通过man find
查看完整手册。掌握find命令可以极大提高Linux系统管理效率。