Canalizar el término de búsqueda desde el portapapeles (no el nombre de archivo) a grep para buscar una carpeta

Canalizar el término de búsqueda desde el portapapeles (no el nombre de archivo) a grep para buscar una carpeta

Estoy intentando utilizar xselel portapapeles para canalizar el término de búsqueda y grepbuscar en una carpeta llena de archivos de texto. ¿Alguien puede sugerir un método para hacerlo?

Respuesta1

Con grepimplementaciones que admiten -rla opción recursiva grep:

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

Para otras grepimplementaciones, utilice findpara buscar los archivos:

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

Esto /dev/nulles para asegurarse de que se pasen al menos 2 nombres de archivos, grepde modo que grepsiempre imprima el nombre de los archivos en los que se encuentran las cadenas.

Tenga en cuenta que si la selección del PORTAPAPELES contiene más de una línea, cada línea se buscará por separado. Por ejemplo, si la selección contiene a<newline>b, informará líneas que contengan ao b(o ambos).

Para hacer coincidir a<newline>b, puedes usar pcregrepsu modo multilínea:

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

información relacionada