Я пытаюсь использовать xsel
буфер обмена, чтобы grep
перенаправить поисковый запрос в папку, полную txt-файлов. Может ли кто-нибудь подсказать, как это сделать.
решение1
С grep
реализациями, которые поддерживают -r
опцию рекурсии grep
:
grep -rFe "$(xsel -b -o)" /path/to/your/folder
Для других grep
реализаций используйте find
для поиска файлов:
find /path/to/your/folder -type f -exec \
grep -Fe "$(xsel -b -o)" /dev/null {} +
Это /dev/null
необходимо для того, чтобы убедиться, что передано не менее 2 имен файлов, grep
поэтому grep
всегда выводятся имена файлов, в которых найдены строки.
Обратите внимание, что если выбор БУФЕРА ОБМЕНА содержит более одной строки, каждая строка будет искаться отдельно. Например, если выбор содержит a<newline>b
, будут выведены строки, содержащие a
или b
(или оба).
Для сопоставления a<newline>b
вместо этого вы можете использовать pcregrep
его многострочный режим:
pcregrep -rM "\Q$(xsel -b -o | sed 's/\\E/&\\&\\Q/g'; printf '\\E')" /path/to/folder