Find 常用示例

find 是 Linux/Unix 系统中用于在目录树中搜索文件的强大工具,支持根据名称、类型、时间、权限等多种条件查找文件,并支持对搜索结果执行操作。以下是详细用法及示例:

基本语法

find [路径] [选项] [操作]

常用选项和示例

1. 按名称查找文件
  • -name:根据文件名(区分大小写)
  • -iname:根据文件名(不区分大小写)
# 查找当前目录下所有 .txt 文件
find . -name "*.txt"

# 查找 /etc 目录下所有以 .conf 结尾的文件(不区分大小写)
find /etc -iname "*.conf"
2. 按类型查找
  • -type:指定文件类型:
    • f:普通文件
    • d:目录
    • l:符号链接
    • s:套接字文件
# 查找 /var 目录下所有子目录
find /var -type d

# 查找当前目录下的所有符号链接
find . -type l
3. 按时间查找
  • -mtime:文件内容修改时间(单位:天)
    • +n:n 天前修改
    • -n:n 天内修改
  • -atime:文件访问时间
  • -ctime:文件状态修改时间(如权限)
# 查找 7 天前修改过的文件
find /home -mtime +7

# 查找 1 天内被访问过的文件
find /var/log -atime -1
4. 按文件大小查找
  • -size:指定文件大小:
    • +n:大于 n
    • -n:小于 n
    • n:等于 n
    • 单位:c(字节)、k(KB)、M(MB)、G(GB)
# 查找大于 100MB 的文件
find / -size +100M

# 查找小于 1KB 的文件
find . -size -1k
5. 按权限/用户查找
  • -perm:按权限查找
  • -user:按文件所有者查找
  • -group:按文件所属组查找
# 查找权限为 644 的文件
find /etc -perm 644

# 查找用户 john 的所有文件
find /home -user john
6. 组合条件
  • -a:与(默认)
  • -o:或
  • !:非
# 查找当前目录下所有 .log 文件且大于 1MB
find . -name "*.log" -a -size +1M

# 查找非 .txt 文件
find . ! -name "*.txt"
7. 排除目录
  • -prune:跳过指定目录
# 查找所有 .js 文件,但跳过 node_modules 目录
find . -path ./node_modules -prune -o -name "*.js" -print
8. 执行操作
  • -exec:对搜索结果执行命令(用 {} 表示文件名,以 \; 结束)
  • -delete:直接删除文件
  • -print:打印结果(默认行为)
# 删除所有 .tmp 文件
find /tmp -name "*.tmp" -exec rm -f {} \;

# 将所有 .txt 文件复制到 backup 目录
find . -name "*.txt" -exec cp {} ./backup \;

# 删除空目录
find . -type d -empty -delete
9. 其他实用操作
  • -maxdepth:限制搜索深度
  • -empty:查找空文件或目录
# 仅搜索当前目录(不递归子目录)
find . -maxdepth 1 -name "*.sh"

# 查找所有空文件
find /var/log -type f -empty

综合示例

# 查找 /home 目录下用户为 john、7 天前修改过、大于 10MB 的 .mp4 文件并删除
find /home -user john -name "*.mp4" -mtime +7 -size +10M -exec rm {} \;

掌握 find 命令能极大提高文件管理效率,结合实际需求组合条件灵活使用,你就距成“神”不远了! ^ v ^ !

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容