Я использую команды cygwin 'find' и 'grep' для поиска файлов по некоторому шаблону. Я делаю это:
find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt |grep -i vbs
Он отлично работает, и у меня есть имя файла с 'vbs' в имени файла. НО теперь мне нужно сделать то же самое, но мне нужно найти имя файла на основе его содержимого, например, 'vbs' не является частью имени файла, а частью содержимого файла. Как это можно изменить? Может быть, что-то вроде:
find . -iname '*.zip' -print -exec unzip -l {} \; 2> error.txt | xargs ??? Может кто-нибудь посоветует? Спасибо
решение1
Поскольку вы собираетесь выполнить grep-анализ содержимого файла, -l
простого перечисления zip-файла будет недостаточно. Вам нужно фактически распаковать его. Итак:
temp=`mktemp -d`
find . -iname '*.zip' -print -exec unzip -d $temp {} \; 2> error.txt
grep -ir vbs $temp