【问题标题】:Convert find command to function in order to search in PDF files将 find 命令转换为函数,以便在 PDF 文件中进行搜索
【发布时间】:2016-03-29 07:43:10
【问题描述】:

我有以下命令取自 here

  find /path -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "your pattern"' \;

我想把它变成一个函数

  pdf_search() { find ./ -name '*.pdf' -exec sh -c 'pdftotext "$1" - | grep --with-filename --label="{}" --color "$@"' \; ; }

我不知道该怎么做,我只是想能够传递一个参数 到函数来使用它,例如

  pdf_search 'look for this'

使用命令作为

pdf_search() { 
  find ./ -name '*.pdf' -exec sh -c 'pdftotext "$1" - | grep --with-filename --label="{}" --color "$1"' \; ; 
}

给出以下错误 -

I/O Error: Couldn't open file '': No such file or directory.

【问题讨论】:

    标签: linux bash shell


    【解决方案1】:

    您将参数传递给函数的语法是正确的(请参阅details)。但问题在于单引号内的 $1 变量的扩展。请阅读接受的答案here

    所以,修复单引号问题后,您的代码可能如下所示:

    pdf_search() {
        find . -name '*.pdf' -exec sh -c 'pdftotext "{}" - | grep --with-filename --label="{}" --color "$1"' -- "$1" \;
    }
    
    pdf_search "your text"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 2021-12-08
      • 1970-01-01
      • 2015-02-19
      相关资源
      最近更新 更多