查找:bash脚本中缺少-exec的参数

查找:bash脚本中缺少-exec的参数,bash,shell,find,Bash,Shell,Find,当我在命令行中准确地键入以下内容时,它可以正常工作: find /<some_path>/{epson,epson_laser,epson_inkjet} -iname "*.ppd" -exec grep "\*ModelName\:" {} \; | sed 's/.*\"\(.*\)\"/\1/' 正如在报告中提到的那样。 如何不仅在终端中,而且在bash脚本中使用第一个代码 p.S.:我使用eval仅用于将字符串“/{epson,epson\u laser,epson

当我在命令行中准确地键入以下内容时,它可以正常工作:

find /<some_path>/{epson,epson_laser,epson_inkjet} -iname "*.ppd" 
  -exec grep "\*ModelName\:" {} \; | sed 's/.*\"\(.*\)\"/\1/'
正如在报告中提到的那样。 如何不仅在终端中,而且在bash脚本中使用第一个代码


p.S.:我使用
eval
仅用于将字符串
“/{epson,epson\u laser,epson\u inkjet}”扩展到多个路径。有谁知道更好的解决方案吗?

如果您想在
find
的输出上执行多个命令,只需根据需要多次使用
-exec
选项即可:

find -exec command1 "{}" \; -exec command2 "{}" \;
您还可以定义执行选项的条件:

find \( -exec command1 \; -false -o -exec command2 \; \)
在您的情况下,您需要以下内容:

find /<some_path>/{epson,epson_laser,epson_inkjet} -iname "*.ppd" -exec grep "\*ModelName\:" "{}" \;  sed 's/.*\"\(.*\)\"/\1/' "{}" \;
find/{epson,epson\u laser,epson\u inkjet}-iname“*.ppd”-exec grep“\*ModelName\:”{};sed的s/*\“\(.*\)\”/\1/'“{}”;

该错误意味着
\参数未被看到,但在上面的我看来它很好。请粘贴脚本中准确的
find
行。不管脚本中的哪一行
find
,因为没有人工作;)但是,如何获得与我键入的第一行相同的结果,但如何让它在bash脚本中工作呢?当我直接将第一行输入到终端时,它可以工作,但在bash中,任何组合都不能工作。当使用
eval
时,必须将转义加倍。第一个为原始shell转义字符,第二个为
eval
转义字符。这就是为什么最好将
-exec
命令放入脚本中,这样就不需要使用
eval
。实际上,我不确定为什么首先需要使用
eval
find /<some_path>/{epson,epson_laser,epson_inkjet} -iname "*.ppd" -exec grep "\*ModelName\:" "{}" \;  sed 's/.*\"\(.*\)\"/\1/' "{}" \;