Ich versuche, xsel
Suchbegriffe über die Zwischenablage an grep
einen Ordner voller TXT-Dateien weiterzuleiten. Kann mir jemand eine Methode dafür vorschlagen?
Antwort1
Bei grep
Implementierungen, die -r
die Option für rekursiv unterstützen grep
:
grep -rFe "$(xsel -b -o)" /path/to/your/folder
Für andere grep
Implementierungen verwenden Sie find
zum Suchen der Dateien:
find /path/to/your/folder -type f -exec \
grep -Fe "$(xsel -b -o)" /dev/null {} +
Dadurch /dev/null
wird sichergestellt, dass mindestens zwei Dateinamen übergeben werden, grep
sodass grep
immer 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 a
oder b
(oder beides) enthalten.
Zum Abgleichen a<newline>b
können Sie stattdessen pcregrep
den Mehrzeilenmodus verwenden:
pcregrep -rM "\Q$(xsel -b -o | sed 's/\\E/&\\&\\Q/g'; printf '\\E')" /path/to/folder