作为Linux系统管理员,find命令是我每天使用最频繁的工具之一。掌握它,你就能像侦探一样精准定位系统中的任何文件。今天,我将分享15个最高频的应用场景,每个都配有实战案例。

场景1:按名称查找文件

  问题:快速定位名为“nginx.conf”的配置文件

  find /etc -name "nginx.conf"场景2:忽略大小写搜索

  问题:不确定文件大小写时查找日志

  find /var/log -iname "*.log"场景3:按文件类型过滤

  问题:查找当前目录下所有目录

  find . -type d

  技巧:f普通文件,l符号链接,d目录

场景4:按文件大小查找

  问题:清理超过100MB的大文件

  find /home -size +100M

  记忆法:+表示大于,-表示小于,不加符号表示精确等于

场景5:按修改时间搜索

  问题:查找7天内修改过的文件

  find /var/www -mtime -7

  扩展:-mtime +30 查找30天前修改的文件

场景6:组合多个条件

  问题:查找PHP文件且7天内被修改过

  find . -name "*.php" -mtime -7场景7:查找并删除

  问题:安全删除所有.tmp文件

  find /tmp -name "*.tmp" -delete

  警告:先运行不加-delete的版本确认结果!

场景8:查找空文件/目录

  问题:清理空目录

  find . -type d -empty场景9:按权限查找

  问题:查找777权限的文件(安全隐患!)

  find /home -type f -perm 0777场景10:查找并执行命令

  问题:批量修改文件权限

  find ./scripts -name "*.sh" -exec chmod +x {} \;

  解析:{}代表找到的文件,\;表示命令结束

场景11:查找属于特定用户的文件

  问题:查看用户alice的所有文件

  find / -user alice 2>/dev/null场景12:深度控制

  问题:仅搜索当前目录,不进入子目录

  find . -maxdepth 1 -name "*.conf"场景13:排除特定目录

  问题:查找文件时跳过node_modules

  find . -type f -name "*.js" -not -path "./node_modules/*"场景14:按内容查找(结合grep)

  问题:在所有配置文件中搜索“192.168.1.1”

  find /etc -type f -name "*.conf" -exec grep -l "192.168.1.1" {} \;场景15:查找最新/最旧文件

  问题:找出24小时内最新的5个日志文件

  find /var/log -name "*.log" -mtime -1 | head -5专家技巧:构建复杂查询

  实战案例:清理30天前且大于50MB的日志文件

  find /var/log -name "*.log" -mtime +30 -size +50M -exec echo "删除: {}" \;

  先运行看输出,确认无误后去掉echo直接执行

  黄金法则:不确定时先用-ls或-print预览结果,再执行危险操作。find配合xargs能处理大量文件,但要注意特殊字符问题。

  掌握这15个场景,你已经超越了90%的Linux用户。记住:能力越大,责任越大——操作生产环境文件时,务必谨慎!