我正在尝试在包含大量子目录的多个不同文件中找到多个模式(我有一个文件)。 我正在尝试使用退出代码不输出找到的所有模式(因为我只需要找不到的模式),但退出代码不能正常理解。
while read pattern; do
grep -q -n -r $pattern ./dir/
if [ $? -eq 0 ]; then
: #echo $pattern ' exists'
else
echo $pattern " doesn't exist"
fi
done <strings.tmp
答案 0 :(得分:2)
你可以在bash中使用它:
while read -r pattern; do
grep -F -q -r "$pattern" ./dir/ || echo $pattern " doesn't exist"
done < strings.tmp
read -r
安全阅读正则表达式"$pattern"
中使用引文以避免shell转义-n
(安静)标记,所以无需使用-q
答案 1 :(得分:1)
@ anubhava的解决方案应该有效。如果由于某种原因没有,请尝试以下
while read -r pattern; do
lines=`grep -q -r "$pattern" ./dir/ | wc -l`
if [ $lines -eq 0 ]; then
echo $pattern " doesn't exist"
else
echo $pattern "exists"
fi
done < strings.tmp