在 Linux 系统中,文件查询主要通过以下命令实现,根据不同的需求选择合适的工具:
find
最强大的递归查找工具,支持多条件搜索。
find [路径] [选项] [表达式]
常用示例:
- 按文件名查找(精确/模糊):
bash
find /home -name "*.txt" # 精确匹配
find /etc -iname "*.conf" # 忽略大小写
- 按文件类型查找:
bash
find /var -type f # 查找普通文件
find / -type d -name "log" # 查找目录
- 按时间/大小过滤:
bash
find / -mtime -7 # 7天内修改的文件
find / -size +10M # 大于10MB的文件
- 执行后续操作(如删除):
bash
find /tmp -name "*.tmp" -delete # 删除匹配文件
locate
基于数据库的快速查找(需先更新数据库 sudo updatedb
):
locate [选项] 文件名
示例:
locate nginx.conf # 快速查找路径
locate -i "*.jpg" # 忽略大小写
grep
在文件中搜索文本内容(支持正则表达式):
grep [选项] "搜索词" [文件]
常用选项:
- -r
递归目录
- -i
忽略大小写
- -n
显示行号
示例:
grep -rn "error" /var/log # 递归搜索日志中的错误
grep -i "hello" file.txt # 忽略大小写搜索
ack
/ ag
(The Silver Searcher)更快的代码搜索工具(需安装):
ag "pattern" /path # 高性能搜索
bash
find /path -type f -exec chmod 644 {} \;
bash
find src/ -name "*.py" | xargs wc -l
bash
which ls # 显示命令路径
whereis python # 显示二进制/源码/手册位置
whereis
:查找二进制、源码和手册页。which
:显示命令的完整路径(仅限 $PATH
目录)。type
:判断命令类型(内置/别名/外部命令)。locate
(但需定期更新数据库)。find
(功能全面但速度较慢)。grep
或 ag
/ack
。根据具体场景灵活组合这些命令,可以高效定位文件或内容!