给定字符串查找文件名,例如,查找当前目录下所有文件中包含字符串"Linux"的文件,可以使用如下命令:egrepLinux*
举例:testfile、testfile1中都还有Linux,查找结果如下所示:
$egrepLinux*#查找当前目录下包含字符串“Linux”的文件
testfile:helloLinux!
testfile:LinuxisafreeUnix-typeoperatingsystem.
testfile:Linux.
testfile1:helLinux!
testfile1:ThisaLinuxtestfile!
扩展资料
Linuxegrep命令执行效果与"grep-E"相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。
egrep是用extendedregularexpression语法来解读的,而grep则用basicregular
expression语法解读,extendedregularexpression比basicregular
expression的表达更规范。
概述
使用grep可以查找包含指定字符串的文件
步骤详解格式:
grep “要查找的字符串” 文件名
例子:
grep "192.168.0.1" /etc
文件名可以使用基本正则表达式(BRE),例如, 查找test目录下的所有文件,是否包含www.dutycode.com字符串。
grep “www.dutycode.com” /root/zzh/test/*
小贴士:使用-n 参数,可以显示字符串在文件中的行数
拓展内容关于grep的命令的使用:
几个常用的查询指令:
1、查找时不区分字符串的大小写
grep -i “查找的字符串” 文件名
2、查找时使用正则表达式,匹配符合的字符串
grep -e “正则表达式” 文件名
3、查找不匹配指定字符串的行:
grep -v “被查找的字符串” 文件名
4、查找时显示被查找字符串所在的行数
grep -n “查找的字符串” 文件名
从文件中搜索并显示文件名当你从不止一个的文件中搜索时,默认它将显示文件名:
代码如下:
grep
word
文件名
grep
root
/etc/*
示例输出:
代码如下:
/etc/bash.bashrc:
See
man
sudo_root
for
details.
/etc/crontab:17
*
*
*
*
root
cd
/
run-parts
--report
/etc/cron.hourly
/etc/crontab:25
6
*
*
*
root
test
-x
/usr/sbin/anacron
||
(
cd
/
run-parts
--report
/etc/cron.daily
)
/etc/crontab:47
6
*
*
7
root
test
-x
/usr/sbin/anacron
||
(
cd
/
run-parts
--report
/etc/cron.weekly
)
/etc/group:root:x:0:
grep:
/etc/gshadow:
Permission
denied
/etc/logrotate.conf:
create
0664
root
utmp
/etc/logrotate.conf:
create
0660
root
utmp
每行开始的第一个部分是文件名(如:/etc/crontab、/etc/group)。使用
-l
选项可以只显示文件名:
代码如下:
grep
-l
string
filename
grep
-l
root
/etc/*
示例输出:
代码如下:
/etc/aliases
/etc/arpwatch.conf
grep:
/etc/at.deny:
Permission
denied
/etc/bash.bashrc
/etc/bash_completion
/etc/ca-certificates.conf
/etc/crontab
/etc/group
你也可以逆转输出使用
-L
选项来输出那些不匹配的文件的文件名:
代码如下:
grep
-L
word
filename
grep
-L
root
/etc/*
示例输出:
代码如下:
/etc/apm
/etc/apparmor
/etc/apparmor.d
/etc/apport
/etc/apt
/etc/avahi
/etc/bash_completion.d
/etc/bindresvport.blacklist
/etc/blkid.conf
/etc/bluetooth
/etc/bogofilter.cf
/etc/bonobo-activation
/etc/brlapi.key
根据文件内容查找文件
输入以下命令:
代码如下:
grep
'string'
*.txt
grep
'main('
*.c
grep
'#include'
*.c
grep
'getChar*'
*.c
grep
-i
'ultra'
*.conf
grep
-iR
'ultra'
*.conf
其中
-i
:
忽略模式(匹配字符串
valid、
VALID、
ValID
)和输入文件(匹配
file.c
FILE.c
FILE.C)的大小写。
-R
:
递归读取每个目录下的所有文件。
高亮匹配到的模式
在搜索大量文件的时候你可以轻松地高亮模式:
代码如下:
$
grep
--color=auto
-iR
'getChar()'
*.c
为查找到的模式显示文件名和行号
你也许需要显示文件名和行号:
代码如下:
$
grep
--color=auto
-iRnH
'getChar()'
*.c
其中,
-n
:
在输出的每行前面添加以
1
开始的行号。
-H
:
为每个匹配打印文件名。要搜索多个文件时这是默认选项。(LCTT
译注:-h
选项强制隐藏文件名另外
-l
和
-L
选项用于仅显示匹配/不匹配的文件名,而
-H
和
-h用于控制在显示匹配行前显示/不显示文件名,注意区分。)
代码如下:
$grep
--color=auto
-nH
'DIR'
*
输出样例:
你也可以使用
find
命令:
代码如下:
$
find
.
-name
*.c
|
xargs
grep
main(
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)