我希望创建一个将被发送到数据库的删除查询。
我真的没有这样做的模型,所以我在中寻找关键词delete / bigcompany / scripts / dbscripts /目录,看看其他人是如何做到的。
当我使用它时,我得到了一大堆很好的例子,但它没有给我脚本的名称:
cat /bigcompany/scripts/dbscripts/* | grep delete
我想知道具有删除行查询的脚本的名称,因此我可以在脚本的上下文中看到该查询。
我试过了:
for i in $(ls /bigcompany/scripts/dbscripts/ )
do
if [ cat /bigcompany/scripts/dbscripts/$i | grep delete ]
then
echo $i
fi
done
我在考虑是否" cat / bigcompany / scripts / dbscripts / | grep delete"评估成功后,脚本将回显包含该关键字的脚本名称。
但事实并非如此。
答案 0 :(得分:2)
没有文件名的原因是因为你cat
将它们全部放入一个文件中。如果您让grep
单独搜索它们,它会显示各个文件名:
grep delete /bigcompany/scripts/dbscripts/*
答案 1 :(得分:2)
你想要一个包含匹配项的文件名列表,所以使用-l
来做到这一点(一次性完成,这有额外的优点,可以避免文件名中的空格和其他古怪字符出现问题) :
grep -l delete /bigcompany/scripts/dbscripts/*
如果你正在处理SQL,除非有相反的强标准,你可能也想识别DELETE,所以添加-i
(不区分大小写):
grep -l -i delete /bigcompany/scripts/dbscripts/*
答案 2 :(得分:1)
Grep有-H
选项,可以打印每个匹配项的文件名。作为替代方案,您可以使用-l
选项,该选项仅打印匹配的文件名而不是匹配的文本。