將搜尋字詞從剪貼簿(不是檔案名稱)傳送到 grep 以搜尋資料夾

將搜尋字詞從剪貼簿(不是檔案名稱)傳送到 grep 以搜尋資料夾

我正在嘗試使用xsel剪貼簿將搜尋字詞透過管道傳輸到grep充滿 txt 檔案的資料夾中進行搜尋。任何人都可以建議一種方法來做到這一點。

答案1

透過grep支援-r遞歸選項的實現grep

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 個檔案名,grep因此grep始終列印在其中找到字串的檔案的名稱。

請注意,如果 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

相關內容