grep-R是否仅在命令由*参数化时才起作用?

grep-R是否仅在命令由*参数化时才起作用?,grep,Grep,非常奇怪的情况。看看这个: billy@prog:~/sql$ grep -R temp_exchange *.sp billy@prog:~/sql$ grep -R temp_exchange * events/sumup_events_by_exchange.sp:drop table if exists temp_exchange; events/sumup_events_by_exchange.sp:create temporary table temp_exchange 所以-第一

非常奇怪的情况。看看这个:

billy@prog:~/sql$ grep -R temp_exchange *.sp
billy@prog:~/sql$ grep -R temp_exchange *
events/sumup_events_by_exchange.sp:drop table if exists temp_exchange;
events/sumup_events_by_exchange.sp:create temporary table temp_exchange
所以-第一个grep没有返回任何内容,但是第二个grep返回了。因此-第一个grep应该返回一些内容,因为查找的字符串位于以.sp结尾的文件中(在第一个命令中指定)

所以我不想用*参数化这个命令,因为这似乎是一个坏习惯

没有*,我还能做我想做的事吗

蒂亚


不要

,因为使用*.sp它将在当前文件夹中全局显示。因此,它将查找当前文件夹中的所有文件和文件夹,最后是.sp

执行
ls*.sp
查看传递给命令的内容。在你的例子中,它是在做正确的事情


您可能需要执行
find.|grep“\.sp$”| xargs grep temp_exchange
或使用find的类似变体,因为使用*.sp它将在当前文件夹中全局显示。因此,它将查找当前文件夹中的所有文件和文件夹,最后是.sp

grep -R --include=*.sp temp_exchange *
执行
ls*.sp
查看传递给命令的内容。在你的例子中,它是在做正确的事情

您可能需要执行
find.|grep“\.sp$”| xargs grep temp_exchange
或使用find的类似变体

grep -R --include=*.sp temp_exchange *
最后一个参数(在本例中为*)告诉grep要搜索哪些文件和目录。
这将导致grep搜索一个文件列表,其中包含与模式匹配的所有顶级文件,以及(在递归模式下)目录中的所有文件

在这些目录中,您可以使用--include选项指定特定的文件模式

最后一个参数(在本例中为*)告诉grep要搜索哪些文件和目录。
这将导致grep搜索一个文件列表,其中包含与模式匹配的所有顶级文件,以及(在递归模式下)目录中的所有文件

在这些目录中,您可以使用--include选项指定特定的文件模式


grep-R--include=*.sp temp\u exchange*您应该将此作为答案。grep-R--include=*.sp temp\u exchange*您应该将此作为答案。
find-名称“*.sp”| xargs grep temp_exchange
将是一个更简单的解决方案。或者
查找-名称'*.sp'-exec grep temp_交换{}\:)
查找-名称“*.sp”| xargs grep temp_exchange
将是一个更简单的解决方案。或者
查找-名称'*.sp'-exec grep temp_交换{}\:)我的系统管理员告诉我永远不要输入带有*的命令。曾经任何命令。因此,我试图遵守这一点,因为我认为他正在跟踪我所做的事情。如果您的所有顶级目录都遵循一种模式(例如src_a src_b),那么您可以将*更改为只检查那些目录“grep-R--include=*.sp temp_exchange src*”,我的系统管理员告诉我不要在其中输入带有*的命令。曾经任何命令。所以我试着遵守这一点,因为我认为他在跟踪我所做的事情。如果您所有的顶级目录都遵循一种模式(例如src_a src_b),那么您可以将*更改为只检查那些目录“grep-R--include=*.sp temp_exchange src*”