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 vbs
está 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 stderr
fluxo. 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.txt
por /dev/null
(isso pode não funcionar em todas as versões do cygwin)