Linux文件查找:find和locate命令入门

Linux文件查找:find和locate命令入门

服务器上找文件,不知道在哪个目录?

别一个个目录翻了,用find和locate命令快速定位。

find命令

find是最强大的查找命令,可以按各种条件搜索。

基本用法:

bash 复制代码
find 目录 -name "文件名"

例子:

bash 复制代码
# 在当前目录及子目录找所有.log文件
find . -name "*.log"

# 在/var目录找nginx.conf
find /var -name "nginx.conf"

# 忽略大小写
find /home -iname "readme.md"

按类型查找

bash 复制代码
# 只找文件
find /var -type f -name "*.log"

# 只找目录
find /home -type d -name "config"

# 只找链接
find /usr -type l

类型参数:

  • f:普通文件
  • d:目录
  • l:符号链接

按时间查找

bash 复制代码
# 7天内修改过的文件
find /var/log -mtime -7

# 7天前修改的文件
find /var/log -mtime +7

# 最近24小时修改的文件
find /var/log -mtime 0

# 最近1小时修改的文件
find /var/log -mmin -60

时间参数:

  • mtime:修改时间(天)
  • mmin:修改时间(分钟)
  • atime:访问时间
  • ctime:状态改变时间

按大小查找

bash 复制代码
# 大于100M的文件
find /home -size +100M

# 小于1M的文件
find /home -size -1M

# 刚好100M的文件
find /home -size 100M

# 找大文件并显示大小
find /home -size +100M -exec ls -lh {} \;

大小单位:

  • c:字节
  • k:KB
  • M:MB
  • G:GB

找到后执行操作

bash 复制代码
# 删除7天前的日志
find /var/log -name "*.log" -mtime +7 -delete

# 修改权限
find /var/www -type f -exec chmod 644 {} \;

# 显示详细信息
find /home -name "*.txt" -exec ls -l {} \;

# 移动文件
find . -name "*.bak" -exec mv {} /backup/ \;

组合条件

bash 复制代码
# 同时满足(-a 或直接连写)
find /var -name "*.log" -size +10M

# 满足其一(-o)
find /home -name "*.jpg" -o -name "*.png"

# 取反(!)
find /var -type f ! -name "*.log"

实用场景

找大文件清理磁盘:

bash 复制代码
find / -type f -size +500M 2>/dev/null | head -20

找最近修改的文件:

bash 复制代码
find /var/www -type f -mmin -30

清理临时文件:

bash 复制代码
find /tmp -type f -mtime +3 -delete

批量改权限:

bash 复制代码
find /var/www -type d -exec chmod 755 {} \;
find /var/www -type f -exec chmod 644 {} \;

locate命令

locate比find快很多,但需要先建立索引。

安装:

bash 复制代码
# Ubuntu
apt install mlocate

# CentOS
yum install mlocate

更新索引:

bash 复制代码
updatedb

使用:

bash 复制代码
locate nginx.conf

几乎秒出结果,比find快得多。

缺点: 索引不是实时的,新文件可能搜不到,需要先updatedb。

find vs locate

特点 find locate
速度 慢(实时搜索) 快(查索引)
实时性 实时 需要更新索引
条件 支持各种条件 只能按名称
操作 可以-exec执行操作 只能查找

选择:

  • 知道大概位置,用find
  • 全盘搜索文件名,用locate
  • 需要按条件过滤,用find
  • 需要对结果执行操作,用find

which和whereis

找命令在哪:

bash 复制代码
# 找命令的位置
which nginx
# /usr/sbin/nginx

# 找命令、源码、手册的位置
whereis nginx
# nginx: /usr/sbin/nginx /etc/nginx /usr/share/man/man8/nginx.8.gz

远程文件搜索

有时候需要在多台服务器上找文件,我用星空组网把服务器连起来,批量搜索:

bash 复制代码
for ip in 10.26.1.{10..15}; do
    echo "=== $ip ==="
    ssh root@$ip "find /var/log -name 'error.log' -size +100M"
done

比一台台登录快多了。

命令速查

场景 命令
按名称找 find /path -name "*.log"
按大小找 find /path -size +100M
按时间找 find /path -mtime -7
只找文件 find /path -type f
只找目录 find /path -type d
找到后删除 find /path -name "*.tmp" -delete
快速定位 locate 文件名

小结

find命令核心用法:

bash 复制代码
find 目录 -name "名称" -type 类型 -size 大小 -mtime 时间 -exec 操作 {} \;

记住最常用的几个参数就够日常用了。

有问题评论区交流~

相关推荐
迪康coolmu7 分钟前
企业文件外发防泄漏实践:从通道封堵到三层全链路管控
大数据·运维·网络·人工智能·安全·阿里云
星恒讯工业路由器8 小时前
新一代通信网:从“连接万物”到“智联万物”的关键跃迁
网络·物联网·智能路由器·工业路由器·工业物联网·5g-a·新一代通信网
comedate8 小时前
Windows / Linux GPU 虚拟内存布局差异与 CUDA 越界访问行为
linux·windows·mmu·cuda 越界访问
暴力求解10 小时前
Linux网络---传输层协议TCP(二)
linux·服务器·开发语言·网络·tcp/ip
石头猫灯10 小时前
WordPress wp2shell 漏洞链完整拆解流程
网络·数据结构·安全·web安全
网安蟹佬霸10 小时前
OSINT开源情报收集实战:从信息搜集到资产测绘(2026最新万字保姆级指南)
前端·网络·安全·web安全·网络安全·开源
JoyCong199810 小时前
ToDesk个人版、专业版、游戏版、设计版、性能版、团队版权益介绍
大数据·运维·游戏·远程工作·远程操作
ltl11 小时前
序列化格式深度对比:Protobuf、FlatBuffers、Cap’n Proto
linux
lengjingzju11 小时前
编译与调试完全指南—第17章 总结
linux
ltl11 小时前
容器网络性能真相:veth vs macvlan vs eBPF 数据面
linux