要使用txt文件中的某些变量执行'find',我就这样做了 但它不起作用。 执行语句是错误的吗?
#/bin/bash
while read line;
do
echo tmp_name: $line
for ST in 'service.getFile("'$line;
do
find ./compact/ -type f -exec grep -l $ST {} \;
done
done < tmpNameList.txt
答案 0 :(得分:1)
在$ST
命令中尝试引用find
。
更重要的是:
./
; 你似乎没有任何特殊的正则表达式字符((
需要在grep
的经典正则表达式模式中引用,我假设你做了表示字面点),因此请改用fgrep
(或grep -F
)。即:
find compact/ -type f -exec fgrep -l "$ST" {} \;
答案 1 :(得分:0)
grep
可以从文件中读取多个模式(-f
选项):
find ./compact/ -type f -exec grep -f patterns.txt {} +
其中patterns.txt
(每行前加'service.getFile('
)为:
sed 's/^/service.getFile(/' tmpNameList.txt >patterns.txt