Weiterleiten des Suchbegriffs aus der Zwischenablage (nicht des Dateinamens) an grep zum Durchsuchen eines Ordners

Weiterleiten des Suchbegriffs aus der Zwischenablage (nicht des Dateinamens) an grep zum Durchsuchen eines Ordners

Ich versuche, xselSuchbegriffe über die Zwischenablage an grepeinen Ordner voller TXT-Dateien weiterzuleiten. Kann mir jemand eine Methode dafür vorschlagen?

Antwort1

Bei grepImplementierungen, die -rdie Option für rekursiv unterstützen grep:

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

Für andere grepImplementierungen verwenden Sie findzum Suchen der Dateien:

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

Dadurch /dev/nullwird sichergestellt, dass mindestens zwei Dateinamen übergeben werden, grepsodass grepimmer die Namen der Dateien gedruckt werden, in denen sich die Zeichenfolgen befinden.

Beachten Sie, dass jede Zeile einzeln durchsucht wird, wenn die CLIPBOARD-Auswahl mehr als eine Zeile enthält. Wenn die Auswahl beispielsweise enthält a<newline>b, werden Zeilen angezeigt, die aoder b(oder beides) enthalten.

Zum Abgleichen a<newline>bkönnen Sie stattdessen pcregrepden Mehrzeilenmodus verwenden:

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

verwandte Informationen