Piping termo de pesquisa da área de transferência (não nome do arquivo) para grep para pesquisar uma pasta

3

Estou tentando usar o termo de pesquisa xsel da área de transferência para pipe grep para pesquisar na pasta cheia de arquivos txt. Alguém pode sugerir um método para fazê-lo.

    
por Ramaprakasha 26.04.2017 / 11:11

1 resposta

3

Com grep implementações que suportam a opção -r para grep recursiva:

grep -rFe "$(xsel -b -o)" /path/to/your/folder

Para outras implementações de grep , use find para pesquisar os arquivos:

find /path/to/your/folder -type f -exec \
  grep -Fe "$(xsel -b -o)" /dev/null {} +

O /dev/null é para garantir que pelo menos dois nomes de arquivos sejam passados para grep , então grep sempre imprime o nome dos arquivos em que as sequências 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 informará as linhas que contêm a ou b (ou ambos).

Para coincidir com a<newline>b , você poderia usar pcregrep com seu modo de múltiplas linhas:

pcregrep -rM "\Q$(xsel -b -o | sed 's/\E/&\&\Q/g'; printf '\E')" /path/to/folder
    
por 26.04.2017 / 12:11