我有./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
现在,我必须从每个文件中采取特定步骤说出step2
注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
请帮我这个
答案 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