クリップボードからの検索語(ファイル名ではない)を grep にパイプしてフォルダーを検索する

クリップボードからの検索語(ファイル名ではない)を grep にパイプしてフォルダーを検索する

xselクリップボードを使用して検索語をパイプし、txt ファイルがいっぱいのフォルダーを検索しようとしていますgrep。これを行う方法を提案できる人はいますか。

答え1

再帰のオプションgrepをサポートする実装の場合:-rgrep

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

その他のgrep実装の場合は、以下findを使用してファイルを検索します。

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

これは/dev/null、少なくとも 2 つのファイル名が渡されることを確認し、文字列が見つかったファイルの名前を常に出力しますgrepgrep

CLIPBOARD 選択に複数の行が含まれている場合、各行は個別に検索されることに注意してください。たとえば、選択に が含まれている場合、または(またはその両方)a<newline>bを含む行が報告されます。ab

代わりに一致させるには、マルチライン モードで次のようにa<newline>b使用できます。pcregrep

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

関連情報