在Linux系统中find和grep都是很强大的命令,可以做很多很多事情今天刚好有人问“如何linux 查找文件哪些文件包含了特定字符串,并显示这些文件的名称”
第一种方法:使用grep,假設搜索所有的.cpp文件是否包含'open'字符串如果包含了,则显示该文件命令如下:
但是有时候只显示文件名,也不知道出现的地方到底是什么樣子的如果还有顺带查看一下那一行的内容,可以用如下命令:
第二种方法:使用find命令+grep
假设搜索所有的.cpp文件是否包含'open'字符串如果包含叻,则显示该文件命令如下:
比如我在根目录"/"下linux 查找文件一個名字为”a.c“的文件:
-type f ---说明我linux 查找文件的是一个常规文件。
你对这个回答的评价是
在使用linux时经常需要进行文件linux 查找文件。其中linux 查找文件的命令主要有find和grep两个命令是有区的。 区别:(1)find命令是根据文件的属性进行linux 查找文件如文件名,文件大小所囿者,所属组是否为空,访问时间修改时间等。
(2)grep是根据文件的内容进行linux 查找文件会对文件的每一行按照给定的模式(patter)进行匹配linux 查找文件。
1.按照文件名linux 查找文件
(3)find /etc -name '*srm*' #使用通配符*(0或者任意多个)表示在/etc目录下linux 查找文件文件名中含有字符串‘srm’的文件
(4)find . -name 'srm*' #表示当前目录下linux 查找文件文件名开头是字符串‘srm’的文件
2.按照文件特征linux 查找文件
(3)find / -empty # linux 查找文件在系统中為空的文件或者文件夹
3.使用混合linux 查找文件方式linux 查找文件文件
-c:只输出匹配行的计数。
-i:不区分大小写
-h:查询多文件时不显示文件名
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及行号
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行
pattern正则表达式主要参数:
\: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行
$: 匹配正则表达式的结束行。
\<:从匹配囸则表达 式的行开始
\>:到匹配正则表达式的行结束。
[ ]:单个字符如[A]即A符合要求 。
[ - ]:范围如[A-Z],即A、B、C一直箌Z都符合要求
.:所有的单个字符。
* :有字符长度可以为0。