微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux从.bz2文件search文本string在子目录中recursion

我有一个情况,多个.bz2文件位于子目录中。 我想用bzcat和grep命令来查找所有文件中的文本。

我可以通过使用以下命令来search一个一个文件

bzcat <filename.bz2> | grep -ia 'text string' | less

但是现在我需要为子目录中的所有文件执行上述操作。

缺lesspython bz2模块

安装PHP的bzip2

Bz2每个文件一个目录中

如何将数据传输到bzip2并从Linux中的C ++ stdout中获取结果数据?

使用从源代码构build的bzip2提升iostream

如何使用awk来压缩文件

你可以使用bzgrep而不是bzcat和grep 。 这个更快

要在目录树中递归地grep使用find :

find -type f -name '*.bz2' -execdir bzgrep "pattern" {} ;

find将以递归方式搜索带有*.bz2扩展名的所有文件,并将使用-execdir指定的命令应用于它们。

有几种方法

bzgrep regexp $(find -name *.bz2)

如果找到的文件数量不是很大(这些文件中没有特殊字符),这个方法就可以工作。 否则,你最好使用这个:

find -name *.bz2 -exec bzgrep regexp {} /dev/null ;

请注意第二种方法中的/dev/null 。 你用它来使bzgrep打印找到正则regexp的文件名。

用bzcat修复你的代码

find . -type f -name "*.bz2" |while read file do bzcat $file | grep -ia 'text string' | less done

只要尝试使用:

bzgrep --help grep through bzip2 files

用法: bzgrep [grep_options] pattern [files]

例如,我需要1941974号文件列表中的grep信息:

'billing_log_1.bz' 'billing_log_2.bz' 'billing_log_3.bz' 'billing_log_4.bz' 'billing_log_5.bz'

我能做什么?

bzgrep '1941974' billing_log_1

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐