Я должен найти текст внутри заархивированных файлов. Я использую Cygwin. Некоторые заархивированные файлы пусты. Очевидно, я вообще не хочу иметь «шумную» информацию об этих «пустых zip-файлах». Например

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

Где vbs это строка, которую я ищу.

Проблема в том, что он возвращает то, что я ищу, но он также возвращает много шума с такими строками:

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

Я не хочу видеть эти строки с "zipfile is empty"

Я попытался передать это с помощью |grep -v 'zipfile is empty' но он по-прежнему выводит и эти строки.

Мой вопрос: как мне избежать печати этих «пустых» строк и видеть только те строки, которые я ищу; то есть vbs?

1 ответ1

1

Эти дополнительные строки, вероятно, находятся в потоке stderr . Вы можете проверить, увидев, перенаправляют ли они в отдельный файл (например, command 2> error.txt)

В основном, запустите:

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

Если это решит вашу проблему, вы можете заменить error.txt на /dev/null (это может не работать на всех версиях cygwin)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .