一、查找文件命令
1. find - 最强大的文件查找工具
# 按名称查找(支持通配符)
find /path -name "filename" # 精确名称
find /path -name "*.txt" # 通配符匹配
find /path -iname "filename" # 忽略大小写
# 按类型查找
find /path -type f # 普通文件
find /path -type d # 目录
# 按时间查找
find /path -mtime -7 # 7天内修改
find /path -mmin -30 # 30分钟内修改
find /path -newer reference_file # 比某个文件新
# 按大小查找
find /path -size +10M # 大于10MB
find /path -size -1G # 小于1GB
# 组合条件
find /home -type f -name "*.conf" -size +1k -exec ls -lh {} \;
2. locate - 基于数据库的快速查找
# 快速查找(需要先更新数据库)
locate filename # 快速模糊匹配
locate -i filename # 忽略大小写
locate -r "\.conf$" # 正则表达式匹配
# 更新数据库(通常cron会自动更新)
sudo updatedb # 手动更新搜索数据库
3. whereis - 查找二进制文件、源代码和手册页
whereis ls # 查找ls命令位置
whereis -b python3 # 只查找二进制文件
4. which - 查找命令在PATH中的位置
which git # 显示git命令路径
which -a java # 显示所有匹配的java路径
二、查找文件内容
1. grep - 强大的文本搜索
# 基本搜索
grep "pattern" filename # 在文件中搜索
grep -r "pattern" /path # 递归搜索目录
grep -i "pattern" file # 忽略大小写
# 高级选项
grep -l "pattern" * # 只显示包含内容的文件名
grep -n "pattern" file # 显示行号
grep -v "pattern" file # 反向匹配(不包含的)
grep -E "pattern1|pattern2" file # 扩展正则表达式
2. ack/ag/rg - 更快的grep替代品
# ack (ack-grep)
ack "pattern" # 智能搜索,自动忽略版本控制文件
ack -i "pattern" # 忽略大小写
# ag (the silver searcher)
ag "pattern" # 比grep更快
ag -i "pattern" # 忽略大小写
ag -g "*.py" # 搜索指定类型文件
# rg (ripgrep) - 目前最快
rg "pattern" # 默认递归搜索
rg -i "pattern" # 忽略大小写
rg -t py "pattern" # 搜索特定类型文件
三、特殊查找工具
1. fd - 简单快速的find替代品
fd pattern # 当前目录递归搜索
fd -e txt # 按扩展名搜索
fd "\.py$" # 正则表达式
fd -H pattern # 包含隐藏文件
2. fzf - 模糊查找神器
# 安装后可以交互式搜索
fzf # 交互式文件选择
vim $(fzf) # 用vim打开fzf选择的文件
cat $(fzf) # 查看fzf选择的文件
四、环境变量相关
1. $PATH查看和修改
echo $PATH # 查看PATH环境变量
echo $PATH | tr ':' '\n' # 按行显示PATH
which -a command # 查看命令所有位置
2. type - 查看命令类型
type ls # 显示ls是别名、内置命令还是外部命令
type -a command # 显示命令的所有可能位置
五、实用技巧组合
1. 常用组合命令
# 查找并统计文件数量
find /path -type f -name "*.log" | wc -l
# 查找并删除(谨慎使用)
find /tmp -type f -name "*.tmp" -delete
# 查找并执行命令
find . -name "*.bak" -exec rm {} \;
# 查找大文件
find / -type f -size +100M 2>/dev/null
2. 创建快捷命令
# 添加到 ~/.bashrc 或 ~/.zshrc
alias findpy='find . -type f -name "*.py"'
alias greplog='grep -r "ERROR" /var/log/'
alias lsh='ls -la | head -20'
3. 性能优化
# 使用xargs提高性能
find . -name "*.txt" | xargs grep "pattern"
# 限制搜索深度
find / -maxdepth 3 -name "file"
# 使用并行(parallel)
find . -name "*.log" | parallel grep "pattern" {}
六、推荐使用策略
快速定位命令 →
which,
whereis,
type
快速查找文件位置 →
locate(最快,但需要更新数据库)
复杂文件查找 →
find(功能最全)
替代find →
fd(更简单快速)
搜索文件内容 →
rg >
ag >
grep
交互式选择 →
fzf
七、实用示例
# 查找最近修改的配置文件
find /etc -name "*.conf" -mtime -1
# 快速找到nginx配置
locate nginx.conf
# 搜索包含"TODO"的Python文件
rg "TODO" -t py
# 查找大文件并排序
find . -type f -size +10M -exec du -h {} \; | sort -hr
# 模糊查找并编辑
vim $(fzf --preview 'cat {}')
根据具体需求选择合适的工具,可以显著提高工作效率。日常使用中,推荐掌握 locate、find、rg 和 fzf 这几个核心工具。