linux grep挑选所需内容,Linux运维知识之使用 grep 查找所有包含指定文本的文件

本文主要向大家介绍了Linux运维知识之使用 grep 查找所有包含指定文本的文件,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。

5e1b28de2f5c9b51bb72f4d414acd8db.png

报错信息。结果显示除了文件名之外,还有包含请求字符串的行也被一起输出了。

递归地搜索包含指定字符串的文件

上面案例中忽略了所有的子目录。所谓递归搜索就是指同时搜索所有的子目录。

下面的命令会在 /etc/ 及其子目录中搜索包含 stretch 字符串的文件:# grep -R stretch /etc/*

/etc/apt/sources.list:# deb cdrom:[Debian GNU/Linux testing _Stretch_ - Official Snapshot amd64 NETINST Binary-1 20170109-05:56]/ stretch main

/etc/apt/sources.list:#deb cdrom:[Debian GNU/Linux testing _Stretch_ - Official Snapshot amd64 NETINST Binary-1 20170109-05:56]/ stretch main

/etc/apt/sources.list:deb http://ftp.au.debian.org/debian/ stretch main

/etc/apt/sources.list:deb-src http://ftp.au.debian.org/debian/ stretch main

/etc/apt/sources.list:deb http://security.debian.org/debian-security stretch/updates main

/etc/apt/sources.list:deb-src http://security.debian.org/debian-security stretch/updates main

/etc/dictionaries-common/words:backstretch

/etc/dictionaries-common/words:backstretch's

/etc/dictionaries-common/words:backstretches

/etc/dictionaries-common/words:homestretch

/etc/dictionaries-common/words:homestretch's

/etc/dictionaries-common/words:homestretches

/etc/dictionaries-common/words:outstretch

/etc/dictionaries-common/words:outstretched

/etc/dictionaries-common/words:outstretches

/etc/dictionaries-common/words:outstretching

/etc/dictionaries-common/words:stretch

/etc/dictionaries-common/words:stretch's

/etc/dictionaries-common/words:stretched

/etc/dictionaries-common/words:stretcher

/etc/dictionaries-common/words:stretcher's

/etc/dictionaries-common/words:stretchers

/etc/dictionaries-common/words:stretches

/etc/dictionaries-common/words:stretchier

/etc/dictionaries-common/words:stretchiest

/etc/dictionaries-common/words:stretching

/etc/dictionaries-common/words:stretchy

/etc/grub.d/00_header:background_image -m stretch `make_system_path_relative_to_its_root ""$GRUB_BACKGROUND""`

/etc/os-release:PRETTY_NAME=""Debian GNU/Linux 9 (stretch)""

/etc/os-release:VERSION=""9 (stretch)""

搜索所有包含特定单词的文件

上面 grep 命令的案例中列出的是所有包含字符串 stretch 的文件。也就是说包含 stretches , stretched 等内容的行也会被显示。 使用 grep 的 -w 选项会只显示包含特定单词的行:# grep -Rw stretch /etc/*

/etc/apt/sources.list:# deb cdrom:[Debian GNU/Linux testing _Stretch_ - Official Snapshot amd64 NETINST Binary-1 20170109-05:56]/ stretch main

/etc/apt/sources.list:#deb cdrom:[Debian GNU/Linux testing _Stretch_ - Official Snapshot amd64 NETINST Binary-1 20170109-05:56]/ stretch main

/etc/apt/sources.list:deb http://ftp.au.debian.org/debian/ stretch main

/etc/apt/sources.list:deb-src http://ftp.au.debian.org/debian/ stretch main

/etc/apt/sources.list:deb http://security.debian.org/debian-security stretch/updates main

/etc/apt/sources.list:deb-src http://security.debian.org/debian-security stretch/updates main

/etc/dictionaries-common/words:stretch

/etc/dictionaries-common/words:stretch's

/etc/grub.d/00_header:background_image -m stretch `make_system_path_relative_to_its_root ""$GRUB_BACKGROUND""`

/etc/os-release:PRETTY_NAME=""Debian GNU/Linux 9 (stretch)""

/etc/os-release:VERSION=""9 (stretch)""

显示包含特定文本的文件名

上面的命令都会产生多余的输出。下一个案例则会递归地搜索 etc 目录中包含 stretch 的文件并只输出文件名:# grep -Rl stretch /etc/*

/etc/apt/sources.list

/etc/dictionaries-common/words

/etc/grub.d/00_header

/etc/os-release

大小写不敏感的搜索

默认情况下搜索是大小写敏感的,也就是说当搜索字符串 stretch 时只会包含大小写一致内容的文件。

通过使用 grep 的 -i 选项,grep 命令还会列出所有包含 Stretch , STRETCH , StReTcH 等内容的文件,也就是说进行的是大小写不敏感的搜索。# grep -Ril stretch /etc/*

/etc/apt/sources.list

/etc/dictionaries-common/default.hash

/etc/dictionaries-common/words

/etc/grub.d/00_header

/etc/os-release

搜索时包含/排除指定文件

grep 命令也可以只在指定文件中进行搜索。比如,我们可以只在配置文件(扩展名为.conf)中搜索指定的文本/字符串。 下面这个例子就会在 /etc 目录中搜索带字符串 bash 且所有扩展名为 .conf 的文件:# grep -Ril bash /etc/*.conf

OR

# grep -Ril --include=\*.conf bash /etc/*

/etc/adduser.conf

类似的,也可以使用 –exclude 来排除特定的文件:# grep -Ril --exclude=\*.conf bash /etc/*

/etc/alternatives/view

/etc/alternatives/vim

/etc/alternatives/vi

/etc/alternatives/vimdiff

/etc/alternatives/rvim

/etc/alternatives/ex

/etc/alternatives/rview

/etc/bash.bashrc

/etc/bash_completion.d/grub

/etc/cron.daily/apt-compat

/etc/cron.daily/exim4-base

/etc/dictionaries-common/default.hash

/etc/dictionaries-common/words

/etc/inputrc

/etc/passwd

/etc/passwd-

/etc/profile

/etc/shells

/etc/skel/.profile

/etc/skel/.bashrc

/etc/skel/.bash_logout

搜索时排除指定目录

跟文件一样,grep 也能在搜索时排除指定目录。 使用 –exclude-dir 选项就行。

下面这个例子会搜索 /etc 目录中搜有包含字符串 stretch 的文件,但不包括 /etc/grub.d 目录下的文件:# grep --exclude-dir=/etc/grub.d -Rwl stretch /etc/*

/etc/apt/sources.list

/etc/dictionaries-common/words

/etc/os-release

显示包含搜索字符串的行号

-n 选项还会显示指定字符串所在行的行号:# grep -Rni bash /etc/*.conf

/etc/adduser.conf:6:DSHELL=/bin/bash

寻找不包含指定字符串的文件

最后这个例子使用 -v 来列出所有不包含指定字符串的文件。

例如下面命令会搜索 /etc 目录中不包含 stretch 的所有文件:# grep -Rlv stretch /etc/*本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注系统运维Linux频道!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值