Мне не ясно, чего вы пытаетесь достичь / ищете. Возможно, если вы укажете, что именно вы пытаетесь сделать и что должен делать AND, мы могли бы помочь больше.
Это решение выполняется из команды vim:
grep PATTERN /some/path/*
Если вы ищете файлы в каталоге, вы бы использовали:
ls /some/path | grep PATTERN
Вы можете обновить соответствующие части команды.
В любом случае ...
Из вашего скрипта я предполагаю, что у вас есть строка, указывающая путь к каталогу, который вы хотите найти для чего-то, например, Вы хотите найти путь для PATTERN, поместите курсор на строку с путем, затем вы хотите извлечь путь и выполнить поиск по шаблону с помощью вашей команды, пример строки в файле:
source /some/path
Эта команда должна делать то, что вы ожидаете:
:command! -nargs=1 GrepSource :exe printf("!grep '<args>' '%s'/*", substitute(
getline('.'), "\\%(source\\s*\\)\\(.*\\)$", "\\1",""))
С помощью курсора на строке с путем, начинающимся с источника слова, вы можете выполнить указанную выше команду:
:GrepSource PATTERN
Это будет искать файлы в '/ some / path /' по слову PATTERN.
Я предполагаю, что пути в вашем файле не заканчиваются косой чертой '/', и я предполагаю, что вы хотите искать в файлах, поэтому я добавляю '/ *' в конце пути к поиску, заканчивающемуся командой:
grep PATTER /some/path/*
Я использовал substitute
команду, которая заменяет
source /some/path
с
/some/path
Который затем используется в printf
для создания фактической команды.