Estou tentando usar xsel
a área de transferência para canalizar o termo de pesquisa para grep
pesquisar em uma pasta cheia de arquivos txt. Alguém pode sugerir um método para fazer isso.
Responder1
Com grep
implementações que suportam -r
a opção recursiva grep
:
grep -rFe "$(xsel -b -o)" /path/to/your/folder
Para outras grep
implementações, use find
para procurar os arquivos:
find /path/to/your/folder -type f -exec \
grep -Fe "$(xsel -b -o)" /dev/null {} +
O /dev/null
objetivo é garantir que pelo menos 2 nomes de arquivo sejam passados, para grep
que grep
sempre imprima o nome dos arquivos nos quais as strings são encontradas.
Observe que se a seleção CLIPBOARD contiver mais de uma linha, cada linha será pesquisada separadamente. Por exemplo, se a seleção contiver a<newline>b
, ela reportará linhas que contêm a
ou b
(ou ambos).
Para combinar a<newline>b
, você pode usar pcregrep
o modo multilinha:
pcregrep -rM "\Q$(xsel -b -o | sed 's/\\E/&\\&\\Q/g'; printf '\\E')" /path/to/folder