LINUX怎么查找包含特定内容的文件_LINUX使用grep命令查找文件内容

哇,Linux 中的 grep 命令真的很有用。
我们将讨论如何直接使用 grep 命令查找文件的内容。
这是最基本的操作。
我记得2 01 9 年夏天的一天,我帮助一位同事找到了一个丢失的脚本文件。
我用的是这个方法,直接在终端输入:
grep -r "脚本名称" /路径/
一旦运行该命令,它将遍历整个目录结构并直接显示找到的文件的名称,这是非常有效的。

那么有时候大小写会影响搜索结果,怎么办?此时需要添加-i选项,忽略大小写。
例如,2 02 0年系统维护时,我想查找所有有关ERRORS的信息。
我这样做了:
grep -ri“错误”/路径/
这次,无论文件内容是大写还是小写,我们都会为您找到。

在其他情况下,我们需要查看哪一行导致了问题。
在这种情况下,我们需要使用-n选项来显示行号。
我曾经在2 02 1 年帮助一个团队修复了一个bug,我就使用了这个方法,直接进入终端:
grep -rn "错误描述" /path/
这样,匹配的行号就会清晰,使故障排除更加容易。

接下来我们结合find和grep来谈谈条件过滤。
该搜索命令可以按文件名、类型或时间等属性过滤文件,然后通过管道符 | 将它们传递给 grep。
用于内容匹配。
我记得 2 01 8 年的一天,我正在帮助客户查找特定项目的日志文件,并使用了以下方法:
查找/home/用户名“.txt”| xargs grep "成功"
这次不仅找到的文件名符合条件,而且内容也必须包含“成功”。

我们来谈谈使用 grep 和正则表达式进行精确匹配。
该正则表达式是用于查找特定文本模式的神器。
我用这个方法帮助一个朋友在 2 02 2 年找到了他的电子邮件地址:
grep -rE "b[a-zA-Z0-9 ._%+-]+@[a-zA-Z0-9 .-]+.[a-zA-Z]{2 ,}b" /home/user/documents/
这次没有地址电子邮件丢失。

最后,我们要谈谈这些实用参数。
例如,-l 选项仅显示匹配的文件名; -c 选项计算每个文件中匹配行的数量。
所有这些参数均根据实际情况使用,没有固定模式。

总之,通过这个 grep 命令、这些选项和工具,可以很容易地在 Linux 系统上找到特定内容的文件。
但说实话,当时我并不太明白这些参数的具体用途。
我一步步明白了这一点。

LINUX怎么查找一个文件_Linux查找文件的常用命令及用法

需要明确的是,Linux 文件搜索只有这些工具:find 是最通用的,locate 是最快的,which/where 查找路径,grep 搜索内容。

Find 是一款通用播放器。
例如,去年我们运行了一个监控系统,想要找到3 天内修改过的所有日志文件(大于2 00MB)。
只需找到 /var/log -type f -size +2 00M -mtime -3 即可。
使用-type f消除目录干扰,使用-mtime -3 计算时间差。
这种组合特别实用。
另一件值得注意的事情是搜索的效率。
当目录树很大的时候,比如几万G的数据盘,不加-print直接运行可能会卡住。
你必须添加。
降低以检查进度。
还有一个更重要的细节。
使用搜索查找符号链接时,默认会跟随链接。
如果只想查看原始文件,则需要添加-xtype f。

我一开始以为find比find快是因为它检查了数据库,但后来发现这是错误的。
只有当你定位到某个文件所在分区,但不知道具体路径时,locate /etc/sudoers命令才会立即生效。
但很多人并没有注意到这一点。
Locate 找到的结果可能并不新鲜。
例如,刚刚用 yum install 安装的软件可能无法用locate 找到。
要更新数据库,您必须手动执行 sudo updateb。

which 和 where 之间的区别实际上非常微妙。
例如,当您查找Python3 路径时这将为您提供直接的完整路径 /usr/bin/python3 ,而 whileis 将为您提供一堆位置 /usr/bin/python3 /usr/lib/python3 .8 /usr/share/man/man8 /python3 .8 .gz 。
当你看到Whereis结果包含源代码或手册页时,说明该软件安装得比较完整。

最后,grep,这个命令简直就是内容检索的瑞士军刀。
记得有一次在排查线上问题时,某个服务报错,我直接使用find / -name ".log" -exec grep -l "error" {} + 立即定位到3 条问题日志,节省了半天翻箱倒柜的时间。
但使用抓斗时不要偷懒。
grep -r "keyword" /path 递归搜索,不加-n(显示行号)。
大海捞针很容易。
说实话,这确实是一个陷阱。

一个陷阱:使用Find查找文件时,默认区分大小写。
如果要搜索 config.ini 和 config.ini ,需要添加 -iname 以忽略大小写。
不要坚持让 find/-name 匹配“config.ini”。
Linux 并不买账。