Linux 命令:find

概述

  • 以下是Linux find命令的详细教程,包含语法、选项、示例和高级用法
  • 资料已经分类整理好:https://pan.quark.cn/s/26d73f7dd8a7

1. 基本语法与功能

find命令用于在指定目录下递归搜索文件和目录,支持按名称、类型、时间、大小等条件筛选。

核心语法

find [搜索路径] [匹配条件] [执行动作]
  • 搜索路径:默认为当前目录(.),可指定多个路径。
  • 匹配条件:如按名称、时间、大小等筛选(见下表)。
  • 执行动作:对匹配的文件执行操作(如删除、打印、执行命令等)。

2. 常用匹配条件

2.1 按名称搜索
选项作用示例
-name "模式"按文件名匹配(支持通配符)find . -name "*.txt"
-iname "模式"忽略大小写匹配文件名find . -iname "ReadMe.md"
-regex "模式"按正则表达式匹配路径名find . -regex ".*\.(jpg|png)"
2.2 按文件类型搜索
选项作用示例
-type f普通文件find . -type f -name "data*"
-type d目录find /etc -type d -name "net*"
-type l符号链接find /usr/bin -type l
-type b块设备文件find /dev -type b
-type c字符设备文件find /dev -type c
2.3 按文件时间搜索
选项作用示例
-mtime n修改时间为n天前的文件find . -mtime 3
-mtime +n修改时间超过n天的文件find . -mtime +7
-mtime -n修改时间不足n天的文件find . -mtime -2
-mmin n修改时间为n分钟前的文件find . -mmin 30
-newer file比指定文件更新的文件find . -newer last_backup
2.4 按文件大小搜索
选项作用示例
-size n[kMG]文件大小为n单位的文件find . -size 10M
-size +n[kMG]文件大小超过n单位的文件find . -size +1G
-size -n[kMG]文件大小不足n单位的文件find . -size -50k
2.5 按权限和所有者搜索
选项作用示例
-perm mode权限匹配的文件find . -perm 644
-user owner所有者为指定用户的文件find /home -user root
-group group所属组为指定组的文件find . -group developers
2.6 逻辑组合条件
选项作用示例
-and逻辑与(默认)find . -type f -name "*.log" -mtime +30
-or逻辑或find . -name "*.jpg" -or -name "*.png"
-not逻辑非find . -not -type d
()分组(需转义)find . \( -name "*.txt" -or -name "*.md" \) -mtime -7

3. 常用执行动作

选项作用示例
-print打印路径(默认动作)find . -name "*.bak" -print
-ls详细列表形式输出find . -type f -ls
-delete删除匹配的文件find . -name "*.tmp" -delete
-exec 命令 {} \;对每个匹配文件执行命令find . -name "*.jpg" -exec cp {} backup/ \;
-ok 命令 {} \;执行前交互式确认find . -size +1G -ok rm {} \;

4. 高级用法示例

4.1 批量文件操作
# 查找并压缩所有 .log 文件
find . -name "*.log" -exec gzip {} \;

# 查找并移动所有旧日志到归档目录
find /var/log -type f -mtime +30 -exec mv {} /archive/logs/ \;

# 删除30天前的临时文件(交互式确认)
find /tmp -type f -mtime +30 -ok rm {} \;
4.2 查找并替换文本内容
# 在所有 .txt 文件中查找并替换 "old" 为 "new"
find . -name "*.txt" -exec sed -i 's/old/new/g' {} \;
4.3 查找空文件和目录
# 查找并删除空文件
find . -type f -empty -delete

# 查找并列出空目录
find . -type d -empty -ls
4.4 按权限查找与修复
# 查找所有权限为 777 的文件并改为 644
find / -type f -perm 777 -exec chmod 644 {} \;

# 查找所有者为 root 的文件并改为当前用户
find . -user root -exec chown $(whoami) {} \;
4.5 查找大文件/目录
# 查找大于 1GB 的文件
find / -type f -size +1G -exec ls -lh {} \;

# 查找占用空间最大的10个文件
find / -type f -exec du -Sh {} + | sort -rh | head -n 10

5. 性能优化与注意事项

  1. 限制搜索范围:避免从根目录(/)递归搜索,可能导致性能问题。
  2. 使用 -prune 排除目录
    # 搜索 /home 但排除 /home/user/backup 目录
    find /home -path "/home/user/backup" -prune -o -type f -print
    
  3. -exec-exec ... + 的区别
    • -exec cmd {} \;:为每个匹配文件单独执行一次命令(效率低)。
    • -exec cmd {} +:将所有匹配文件作为参数一次性传递给命令(效率高)。
  4. 避免权限不足错误:使用 2>/dev/null 忽略错误:
    find / -name "secret.txt" 2>/dev/null
    

6. 总结

find命令的核心是条件筛选动作执行,常用场景包括:

  • 文件管理(查找、删除、移动)
  • 系统维护(清理临时文件、修复权限)
  • 数据处理(批量替换、备份)

通过组合不同的选项,find可以高效完成复杂的文件搜索和处理任务。建议先使用-print预览结果,确认无误后再执行危险操作(如-delete)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值