Я использую команды 'find' и 'grep' cygwin, чтобы найти файлы на основе некоторого шаблона. Я делаю это:

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

Он работает нормально, и у меня есть имя файла с 'VBS' в имени файла. НО теперь мне нужно сделать подобное, но мне нужно найти имя файла на основе его содержимого, например, «vbs» не является частью имени файла, а частью содержимого файла. Как это можно изменить? Может быть что-то вроде:

находить . -iname '* .zip' -print -exec unzip -l {} \; 2> error.txt | XARGS ??? Может ли кто-нибудь совет? Спасибо

1 ответ1

1

Поскольку вы собираетесь создавать содержимое файла, -l перечисления zip-файла будет недостаточно. Вы должны фактически разархивировать это. так:

temp=`mktemp -d`    
find . -iname '*.zip' -print -exec unzip -d $temp {} \; 2> error.txt
grep -ir vbs $temp   

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