当前位置:首页>Linux>Linux find 命令完全指南

Linux find 命令完全指南

  • 2026-09-04 06:15:11
Linux find 命令完全指南

Linux find 命令完全指南

强大的文件查找工具 · 精准定位文件

find [路径] [选项] [表达式]

一、find 是什么?

find 是 Linux/Unix 系统中用于在目录树中查找文件的命令。它可以根据文件名、大小、修改时间、权限等多种条件来搜索文件,是系统管理和日常使用中不可或缺的工具。

find 不仅能查找文件,还能对找到的文件执行操作,如删除、复制、移动等,实现批量处理。

二、基础语法

find [搜索路径] [选项] [表达式]find /home -name "*.txt"           查找 txt 文件find . -type f -name "*.log"       查找日志文件find / -size +100M                 查找大于100M的文件find . -mtime -7                   查找7天内修改的文件

三、按名称查找

find -name "filename"          精确查找find -name "*.txt"              扩展名查找find -name "file*"              通配符查找find -iname "FILE"              忽略大小写find -regex ".*\.txt$"         正则表达式find -not -name "*.log"         排除匹配

四、按类型查找

find -type f                  普通文件find -type d                  目录find -type l                  符号链接find -type b                  块设备find -type c                  字符设备find -type p                  管道

五、按时间查找

find -mtime -7                 7天内修改find -mtime +30               30天前修改find -atime -1                1天内访问find -ctime -3                3天内属性改变find -newer file.txt          比file更新find -mmin -30                30分钟内修改

六、按大小查找

find -size 100M                正好100Mfind -size +100M               大于100Mfind -size -10M                小于10Mfind -size +1G                 大于1Gfind -size +100k               大于100kfind -empty                    空文件

七、按权限查找

find -perm 644                 权限为644find -perm -644                包含644权限find -user tom                 所有者为tomfind -group admin              所属组为adminfind -uid 1000                 UID为1000find -gid 1000                 GID为1000

八、对找到的文件执行操作

find -name "*.log" -delete          删除找到的文件find -name "*.txt" -exec rm {} \;     删除(确认)find -name "*.txt" -exec ls -l {} \;   列出详情find -name "*.log" -exec cat {} > all.log \; 合并find -name "*.txt" -print0 | xargs -0  处理空格文件名find -name "*.sh" -exec chmod +x {} \; 添加执行权限

九、实战示例

9.1 查找大文件

find / -type f -size +100M 2>/dev/nullfind /home -type f -size +50M -lsfind . -type f -size +1G | head -20

9.2 清理日志

find /var/log -name "*.log" -mtime +30 -deletefind /var/log -name "*.log" -mtime +7 -exec rm {} \;find . -name "*.log" -empty -delete

9.3 查找特定文件

find / -name "my.cnf" 2>/dev/nullfind /etc -name "php.ini"find . -name "*.conf" -path "*/apache/*"find / -type f -name "*.php" | grep -i config

9.4 批量处理

find . -name "*.jpg" -exec convert {} -resize 50% {} \;find . -type f -name "*.sh" -exec chmod +x {} \;find . -name "*.txt" -exec dos2unix {} \;

十、常见问题

Q: 搜索目录太深速度慢? A: 使用 -maxdepth 限制深度,如:find . -maxdepth 3

Q: 文件名有空格怎么办? A: 使用 -print0 和 xargs -0,如:find . -print0 | xargs -0 ls

Q: 权限不足怎么办? A: 在命令后加 2>/dev/null 忽略错误,或使用 sudo


💡 经验总结

1. -name 支持通配符,-regex 支持正则 2. -exec 是强大功能,但要注意转义 3. 结合管道和 xargs 处理复杂操作 4. -delete 删除前先确认

最新文章

随机文章