我正在尝试使用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
,它将报告包含a
或b
(或两者)的行。
要进行匹配a<newline>b
,您可以使用pcregrep
其多行模式:
pcregrep -rM "\Q$(xsel -b -o | sed 's/\\E/&\\&\\Q/g'; printf '\\E')" /path/to/folder