搜索并打印两个文件中存在的匹配字符串

时间:2016-07-25 12:34:23

标签: shell

我有./all_files/reference_file.txt,其数据如下所示。

reference_file.txt包含文件名,如图所示

file1.txt
file2.txt
file3.txt
file4.txt
file5.txt

所有文件中的数据如下所示:

step_1
step_2
step_3
step_4

现在,我必须从每个文件中采取特定步骤说出st​​ep2

注1:文件名必须出现在reference_file.txt

注2:step2不是第二行:

注3:搜索应该递归执行。

我使用了以下代码

#!/bin/sh

while read f; do
    if [ -f "$f" ]; then
       find . -type f -name "*.txt" | xargs  grep -l -F 'step_2' "$f"
    fi
done <reference_file.txt

请帮我这个

1 个答案:

答案 0 :(得分:0)

您的代码有两处更改:

  • 删除if,因为find应该找到该文件并在其中 如果文件不是最新的,那么if可能会返回false 目录。
  • find命令应该作为参数传递$f

以下是更新的示例:

while read f; do
   find . -type f -name "${f}" | xargs  grep -l -F 'step_2'
done <reference_file.txt