find 命令详解
find 是 Linux/Unix 系统中一个非常强大的文件搜索工具,可以根据多种条件查找文件和目录。
基本语法
find [路径] [选项] [操作]
常用选项
按名称查找
-name:按文件名查找(区分大小写)find /home -name "*.txt"-iname:按文件名查找(不区分大小写)find /home -iname "*.TXT"
按类型查找
-type:按文件类型查找f:普通文件d:目录l:符号链接
find /var -type d
按时间查找
-mtime:按修改时间查找(天数)find / -mtime -7 # 7天内修改过的文件 find / -mtime +30 # 30天前修改过的文件-mmin:按修改时间查找(分钟)find / -mmin -60 # 60分钟内修改过的文件-atime:按访问时间查找-ctime:按状态变更时间查找
按大小查找
-size:按文件大小查找find / -size +1G # 大于1GB的文件 find / -size -100k # 小于100KB的文件 find / -size 50M # 等于50MB的文件
按权限查找
-perm:按权限查找find / -perm 644 # 精确匹配644权限的文件 find / -perm -644 # 至少包含644权限的文件 find / -perm /u=r # 用户有读权限的文件
按用户/组查找
-user:按所有者查找find / -user root-group:按所属组查找find / -group www-data
执行操作
基本操作
-print:打印结果(默认操作)-ls:以ls格式显示结果find /tmp -type f -ls
删除文件
-delete:删除找到的文件find /tmp -name "*.tmp" -delete
执行命令
-exec:对找到的文件执行命令find . -name "*.bak" -exec rm {} \; find /var/log -name "*.log" -exec gzip {} \;
组合条件
-a或-and:与(默认)-o或-or:或!或-not:非():组合条件(需要转义)
find / \( -name "*.jpg" -o -name "*.png" \) -size +1M
实用示例
-
查找并删除空文件:
find /tmp -type f -empty -delete -
查找最近修改的PHP文件:
find /var/www -name "*.php" -mtime -1 -
查找所有可执行文件:
find / -type f -perm /a=x -
查找并更改权限:
find /home -type f -perm 777 -exec chmod 644 {} \; -
查找大文件并排序:
find / -type f -size +100M -exec ls -lh {} + | sort -k5 -rh
find 命令功能非常强大,上述只是常用功能的介绍。可以通过 man find 查看完整手册。
No Comments