使用bash在.gz文件中的目录(包括子目录)中获取所有出现的字符串?
问题描述:
我想找到“getSORByID”的所有匹配具有子目录如下的目录里面:使用bash在.gz文件中的目录(包括子目录)中获取所有出现的字符串?
*/*/*/*/*/*/myfile.gz
我试图找到this -name * myfile.gz -print0 | xargs -0 zgrep -i“getSorById”但它没有工作。任何人都可以告诉我最好和最简单的方法来得到这个?
答
使用以下找到方法:
find . -name *myfile.gz -exec zgrep -ai 'getSORByID' {} \;
这将打印包含getSORByID
子
答
find ./ -name '*gz' -exec zgrep -aiH 'getSorById' {} \;
查找允许您使用来执行对文件的命令所有可能行“-exe”并用文件名替换“{}”,则以“\;”结束命令
我在zgrep中加了一个“-H”,所以当它匹配时它也会打印出文件路径,因为它很有帮助。 “-a”将二进制文件视为文本(因为您可能会得到tar格式的gzip文件)
最后,最好引用您的字符串以防bash开始使用它们。
https://linux.die.net/man/1/grep https://linux.die.net/man/1/find
你得到什么错误?还需要添加目录。 try :: find。 -name“myFile.gz”-type f -exec zgrep -i getSorById {} \;在某些情况下,如果您只想打印具有该关键字的文件,请使用grep -il,则可能必须使用gzgrep –
。同样,如果这是你所要求的,你可以使用grep -ril“keyword”* –
@abhishekphukan它没有给出预期的结果,尽管它没有抛出任何错误。 –