Ajuste o comando grep para evitar linhas 'extras'

Ajuste o comando grep para evitar linhas 'extras'

Tenho que encontrar algum texto dentro de arquivos compactados. Estou usando o Cygwin. Alguns arquivos compactados estão vazios. Obviamente, não quero ter informações 'ruidosas' sobre esses 'arquivos zip vazios'. Por exemplo

find . -iname '*.zip' -print -exec unzip -l {} \; |grep -i vbs

Onde vbsestá uma string que estou procurando.

O problema é que ele retorna o que procuro mas também retorna muito ruído com linhas como esta:

C\ProgramData\ABC\DEF\VBScripts\OutputArchiveFiles.vbs
warning [/z/XYZ/Backup/123/456/Backup Set 1/Backup Files 1/Backup files 2.zip]:  zipfile is empty

Não quero ver essas linhas com 'zipfile está vazio'

Tentei canalizá-lo, |grep -v 'zipfile is empty'mas ele ainda produz essas linhas também.

Minha pergunta: como posso evitar imprimir essas linhas 'vazias' e ver apenas as linhas que procuro; ou seja, vbs?

Responder1

Essas linhas adicionais provavelmente estão no stderrfluxo. Você poderia testar vendo se elesredirecionar para um arquivo separado(por exemplo command 2> error.txt)

Basicamente, execute:

find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt |grep -i vbs 

Se isso resolver o seu problema, você pode substituir error.txtpor /dev/null(isso pode não funcionar em todas as versões do cygwin)

informação relacionada