本指南将向您展示如何搜索压缩文件中的文本字符串或特定表达式。
如何使用Grep命令搜索和过滤结果
最强大的Linux命令之一是代表“Global Regular Expressions Print”的grep。
您可以使用grep来搜索文件内容中的模式或其他命令的输出。
例如,如果您运行以下ps命令,您将看到计算机上正在运行的进程列表。
ps -ef
结果快速滚动到屏幕上,如果通常有大量的结果。 这使得查看信息特别痛苦。
当然,您可以使用more命令一次列出一页结果页面,如下所示:
ps -ef | 更多
虽然上述命令的输出比前一个更好,但您仍然需要翻阅结果以找到要查找的内容。
grep命令可以根据发送给它的标准过滤结果。 例如,要搜索UID设置为“root”的所有进程,请运行以下命令:
ps -ef | grep根
grep命令也适用于文件。 想象一下你有一个包含书名列表的文件。 想象一下,你想看看文件是否包含“小红帽”。 您可以按如下方式搜索文件:
grep“小红帽”书单
如何使用zgrep命令搜索压缩文件
一个鲜为人知但功能非常强大的工具是zgrep。 zgrep命令可让您搜索压缩文件的内容,而无需首先提取内容。
zgrep命令可用于压缩zip文件或使用gzip命令压缩的文件。
有什么不同?
一个zip文件可以包含多个文件,而使用gzip命令压缩的文件只包含原始文件。
要在使用gzip压缩的文件中搜索文本,只需输入以下命令:
zgrep表达式filetosearch
例如,想象一下书籍列表已使用gzip压缩。 您可以使用以下命令在压缩文件中搜索文本“小红帽”:
zgrep“小红帽”bookslist.gz
您可以使用任何表达式和通过grep命令提供的所有设置作为zgrep命令的一部分。
如何使用zipgrep命令搜索压缩文件
zgrep命令适用于使用gzip压缩的文件,但对使用zip实用程序压缩的文件效果不佳。
如果zip文件包含单个文件,但大多数zip文件包含多个文件,则可以使用zgrep。
zipgrep命令用于搜索zip文件中的模式。
举个例子,假设你有一个名为book的文件,其中包含以下标题:
- 哈利·波特与密室
- 驯悍记
- 老鼠和人
- 银河游击队指南
- 哈利波特与凤凰社
另外想象一下你有一个叫做电影的文件,其中包含以下标题
- 矩阵
- 哈利·波特与密室
- 哈利·波特与火焰杯
- 星球大战 - 一个新的希望
现在想象这两个文件已经使用zip格式压缩成一个名为media.zip的文件。
您可以使用zipgrep命令在zip文件中的所有文件中查找模式。 例如:
zipgrep模式文件名
例如,假设你想查找“哈利波特”的所有事件,你可以使用下面的命令:
zipgrep“哈利波特”media.zip
输出结果如下:
书:哈利·波特与密室
书:哈利波特与凤凰社
电影:哈利波特与密室
电影:哈利波特与火焰杯
正如你可以使用任何带有zipgrep的表达式,你可以使用grep这使得这个工具非常强大,它使搜索zip文件比解压缩,搜索,然后再压缩更简单。
如果您只想搜索zip文件中的某些文件,则可以指定要在zip文件中搜索的文件作为命令的一部分,如下所示:
zipgrep“哈利波特”media.zip电影
现在输出结果如下
电影:哈利波特与密室
电影:哈利波特与火焰杯
如果要搜索除一个以外的所有文件,可以使用以下命令:
zipgrep“哈利波特”media.zip -x书籍
这将产生与以前相同的输出,因为它正在搜索除书籍以外的media.zip内的所有文件。