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