我目前正在 grep 一个目录,寻找仅存在于 .txt 文件中的特定字符串。但是,我想扩展我的 grep,使其仅返回目录包含特定文件类型的值。例如,我现有的 grep:
grep -R abc1234 --include=\*.txt
但我想限制我的返回结果仅包含包含 PDF 等的目录。
答案1
首先,使用该
find
命令查找包含.pdf
文件的目录。该-name
选项用于搜索具有扩展名的文件.pdf
,该-type d
选项确保 find 仅返回目录。该-exec
选项允许我们对找到的每个项目执行操作。在本例中,操作是将 grep 命令应用于目录。find . -name "*.pdf" -type d -exec
接下来,添加
grep
命令。该-R
选项使 grep 在目录中递归搜索,--include=*.txt
将搜索限制为.txt
文件,并且"abc1234"
是您要搜索的字符串。find . -name "*.pdf" -type d -exec grep -R --include=*.txt "abc1234" {} \;
占位{}
符代表 找到的当前目录find
,并\;
表示命令的结束-exec
。
此命令将首先找到包含某个.pdf
文件的所有目录,然后在grep
这些目录中搜索.txt
包含字符串的文件"abc1234"
。