Estoy intentando utilizar xsel
el portapapeles para canalizar el término de búsqueda y grep
buscar en una carpeta llena de archivos de texto. ¿Alguien puede sugerir un método para hacerlo?
Respuesta1
Con grep
implementaciones que admiten -r
la opción recursiva grep
:
grep -rFe "$(xsel -b -o)" /path/to/your/folder
Para otras grep
implementaciones, utilice find
para buscar los archivos:
find /path/to/your/folder -type f -exec \
grep -Fe "$(xsel -b -o)" /dev/null {} +
Esto /dev/null
es para asegurarse de que se pasen al menos 2 nombres de archivos, grep
de modo que grep
siempre 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 a
o b
(o ambos).
Para hacer coincidir a<newline>b
, puedes usar pcregrep
su modo multilínea:
pcregrep -rM "\Q$(xsel -b -o | sed 's/\\E/&\\&\\Q/g'; printf '\\E')" /path/to/folder