Ajuste o comando grep para evitar linhas 'extras'

1

Eu tenho que encontrar algum texto dentro de arquivos compactados. Eu estou usando o Cygwin. Alguns arquivos compactados estão vazios. Obviamente, eu não quero ter informações 'barulhentas' sobre esses 'arquivos zip vazios'. Por exemplo,

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

Onde vbs é uma string que estou procurando.

O problema é que ele retorna o que estou procurando, 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

Eu não quero ver essas linhas com 'zipfile is empty'

Eu tentei canalizá-lo com |grep -v 'zipfile is empty' , mas ele ainda gera essas linhas também.

Minha pergunta: como posso evitar a impressão dessas linhas "vazias" e ver apenas as linhas que estou procurando? ou seja, vbs?

    
por susik 20.06.2016 / 03:31

1 resposta

1

Essas linhas adicionais provavelmente estão no fluxo stderr . Você poderia testar verificando se redireciona 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 seu problema, você pode substituir error.txt por /dev/null (isso pode não funcionar em todas as versões do cygwin)

    
por 20.06.2016 / 05:42

Tags