[英]Linux search text string from .bz2 files recursively in subdirectories
我有一个案例,其中多个.bz2文件位于子目录中。 我想使用bzcat和grep命令linux命令从所有文件中搜索文本。
我可以使用以下命令搜索一个文件:
bzcat <filename.bz2> | grep -ia 'text string' | less
但我现在需要对子目录中的所有文件执行上述操作。
您可以使用bzgrep
而不是bzcat
和grep
。 这更快。
要在目录树中递归grep,请使用find
:
find -type f -name '*.bz2' -execdir bzgrep "pattern" {} \;
find
以递归方式搜索具有*.bz2
扩展名的所有文件,并将指定了-execdir
的命令应用于它们。
有几种方法:
bzgrep regexp $(find -name \*.bz2)
如果找到的文件数量不是很大(并且它们在pathes中没有特殊字符),则此方法将起作用。 否则你最好使用这个:
find -name \*.bz2 -exec bzgrep regexp {} /dev/null \;
请注意第二种方法中的/dev/null
。 你用它来使bzgrep
打印文件名,找到正则regexp
。
试着用:
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
通过bzcat连续修改代码:
find . -type f -name "*.bz2" |while read file
do
bzcat $file | grep -ia 'text string' | less
done
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.