根据条件在指定的文件扩展名中搜索字符串

根据条件在指定的文件扩展名中搜索字符串

我目前正在 grep 一个目录,寻找仅存在于 .txt 文件中的特定字符串。但是,我想扩展我的 grep,使其仅返回目录包含特定文件类型的值。例如,我现有的 grep:

grep -R abc1234 --include=\*.txt

但我想限制我的返回结果仅包含包含 PDF 等的目录。

答案1

  1. 首先,使用该find命令查找包含.pdf文件的目录。该-name选项用于搜索具有扩展名的文件.pdf,该-type d选项确保 find 仅返回目录。该-exec选项允许我们对找到的每个项目执行操作。在本例中,操作是将 grep 命令应用于目录。

    find . -name "*.pdf" -type d -exec
    
  2. 接下来,添加grep命令。该-R选项使 grep 在目录中递归搜索,--include=*.txt将搜索限制为.txt文件,并且"abc1234"是您要搜索的字符串。

    find . -name "*.pdf" -type d -exec grep -R --include=*.txt "abc1234" {} \;
    
    

占位{}符代表 找到的当前目录find,并\;表示命令的结束-exec

此命令将首先找到包含某个.pdf文件的所有目录,然后在grep这些目录中搜索.txt包含字符串的文件"abc1234"

相关内容