欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > linux terminal文件查找

linux terminal文件查找

2025/11/24 15:17:55 来源:https://blog.csdn.net/xidianhuihui/article/details/141636441  浏览:    关键词:linux terminal文件查找

以下所有命令仅仅只做常见用法的介绍,不做详细的参数介绍

如需详细介绍,可到 https://man.linuxde.net 查阅

以下的显示结果均为使用 oh-my-zsh 的显示结果,如果是使用 bash 可能略有差异

注意:zsh 默认情况下不支持*通配符匹配,需要在~/.zshrc中添加setopt nonomatch即可。

1. which

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。

一般使用过程中直接使用which 命令即可:

例如:

which python# /usr/bin/python

2. whereis

whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

一般用来查找都在哪些目录

where bash# bash: /bin/bash /etc/bash.bashrc /usr/share/man/man1/bash.1.gz

3. grep

grep是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

  1. 在文件中查找一个字符串(在 main.cc 中查找 binary
grep "binary" main.cc#    Mat binary; (注意:此时的binary会标红显示)# 如果是多个文件,后面添加文件名即可,在查找的位置前方会显示文件查找到文件的名称# 比如说grep "binary" main.cc demo.cc# 类似这样:(在我的 shell 中,前面的 main.cc 标为紫色,binary 标为红色)# main.cc:    Mat binary;# 当然 shell 中的 * 语法在这里也是适用的,例如匹配所有以 cc 为后缀的文件grep "binary" *.cc
  1. 正则匹配(在main.cc中查找""包裹起来的内容)
# 正则匹配适用 -E 关键字grep -E "\".*\"" main.cc# #include "opencv2/opencv.hpp"
  1. 只显示匹配到的部分
# 参数 -ogrep -o "binary" main.cc# binary# 上面这种做法似乎没有意义,计数好像有点用处# 该参数可以用在正则匹配的时候,直接打印匹配出来的字符串,不需要显示其他的无关信息# 比如:grep -oE "\".*\"" main.cc# "opencv2/opencv.hpp"
  1. 输出行号,统计行数
# 输出行号 参数 -ngrep -nE "\".*\"" main.cc# 在我的 shell 中 1 使用的是绿色数字显示,即行号用绿色数字显示# 1:#include "opencv2/opencv.hpp"# 统计行数 参数 -cgrep -cE "\".*\"" main.cc# 8
  1. 忽略大小写匹配
# 参数 -igrep -i "BINARY" main.cc#     Mat binary;
  1. 只输出匹配到的文件名
# 参数 -lgrep -l "binary" *.cc# main.cc# ...
  1. 递归文件夹查找(在当前目录递归查找:”binary”)
# 参数 -rgrep -r "binary" .#     Mat binary;# ...# 此时可能会提示一些错误信息,比如当前文件夹下面有一个二进制文件等等,我们要忽略其错误信息# 忽略错误信息     参数 -s# 忽略二进制文件   参数 -I
  1. 匹配多个不同的字符串(查找 main.cc 文件中 binary 和 main 字符串)
# 1. 通过正则实现grep -E "binary|main" main.cc# 2. 通过参数 -e 实现grep -e "binary" -e "main" main.cc
  1. 包括和排除指定文件
# 一般我们可以是用 *.后缀 来包括指定文件,但是如果在递归操作的时候不足以支持我们的操作# 我们可以使用三个关键字来进行该操作# 1. --include 包含...文件grep -Ir "binary" . --include=*.cc# 如果是多个grep -Ir "binary" . --include=*.{cc,cmake}# 2. --exclude 排除...文件grep -Ir "binary" . --exclude=*.cmake# 3. --exclude-dir 排除...文件夹里的文件grep -Ir "binary" . --exclude-dir=build
  1. 静默输出(一般用来判断是否查找到)
# 参数 -qgrep -q "binary" main.cc# 该参数一般用来条件测试,成功返回0,失败返回非0

整理归类

参数解释
-E正则匹配
-o只显示匹配到的部分
-n输出行号
-c统计行数
-i忽略大小写
-l只输出匹配到的文件名
-r递归查找
-s忽略错误信息
-I忽略二进制文件
-e匹配多个字符串
--include包含 … 文件(用等号连接后面的参数)
--exclude排除 … 文件(用等号连接后面的参数)
--exclude-dir排除 … 文件夹(用等号连接后面的参数)

颜色区别:

意义颜色
匹配到的字符串红色
匹配到的文件名紫色
匹配到的行号绿色

4. find

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

  1. 列出当前目录及子目录下所有文件和文件夹

find .

  1. /home目录下查找以py为后缀的文件
find /home -name "*.py"# 与 grep 一样使用可以使用参数 -i 来忽略大小写find /home -iname "*.py"
  1. 当前目录及子目录查找pycc结尾的文件

find . -name “.py" -o -name ".cc”

  1. 匹配路径字符串
# 参数 -pathfind . -name "*src*"
  1. 正则文件匹配
# 参数 -regex find . -regex ".*\(py\|cc\)"# 也可以使用 -i 进行忽略大小写find . -iregex ".*\(py\|cc\)"
  1. 当前目录不是.py为后缀的文件
# ! 否定匹配find . ! -name "*.py"

整理归类

参数解释
-i忽略大小写查找
-name查找文件名称
-regex正则查找
!否定匹配

5. locate/slocate

locate命令slocate命令都用来查找文件或目录。

locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词