找到:缺少参数

当我在命令行中输入它时,以下工作正常:

find /<some_path>/{epson,epson_laser,epson_inkjet} -iname "*.ppd" 
  -exec grep "*ModelName:" {} ; | sed 's/.*"(.*)"/1/'

但是,当我尝试从bash脚本中调用以下内容时,我find: missing argument to -exec'

我也尝试了以下(许多变体):

eval find "$1" -iname "*.ppd" -exec 'bash -c grep "*ModelName:" "$1" | sed "s/.*"(.*)"/1/" ;

正如在find-exec-echo-missing-argument-to-exec中提到的那样。 我怎样才能不仅在终端上工作,而且在bash脚本中工作?

PS:我只用eval来扩展字符串"/<some_path>/{epson,epson_laser,epson_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/' "{}" ;
链接地址: http://www.djcxy.com/p/78331.html

上一篇: find: missing argument to

下一篇: Recursively rename files using find and sed