我有一个文件(让我们称之为images.txt) - 每行都是一个图像路径。即
"images/dashboard/unit4A/lesson1.png"
"images/dashboard/unit4A/lesson2.png"
"images/dashboard/unit4A/lesson3.png"
"images/dashboard/unit4A/lesson4.png"
"images/dashboard/unit4A/lesson5.png"
等
我想grep整个目录(app)以查看是否在该目录中的HTML,CSS或JS文件中的任何位置提到了每个图像路径。
我试过了 grep -F -f images.txt app / * 但它抱怨app / *有子目录,而且,它并没有完全符合我的要求(我不需要找到图像的实际行 - 我只需要知道,对于每个图像,无论是否存在)
因此示例输出可能如下所示:
"images/dashboard/unit4A/lesson1.png" - found
"images/dashboard/unit4A/lesson2.png" - not found
"images/dashboard/unit4A/lesson3.png" - found
"images/dashboard/unit4A/lesson4.png" - not found
"images/dashboard/unit4A/lesson5.png" - found
只返回未找到的图像列表也是可以接受的。
使用grep有一个很好的方法吗?
答案 0 :(得分:2)
您可以xargs
使用递归 grep
,如下所示:
xargs -I % grep -ilR '%' /app/ --include={*.html,*.css,*.js} < images.txt
编辑根据已编辑的问题,您可以执行以下操作:
while read -r pat; do
printf "%s - " "$pat"
grep -iqR "$pat" /app/ --include={*.html,*.css,*.js} && echo "found" || echo "not found"
done < images.txt