将find命令转换为函数以便搜索PDF文件

时间:2015-12-22 23:18:55

标签: linux bash shell

我从以下命令中取出 here

{{cost|currency}}

我想把它转变为

的功能
  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"' \; ; 
}

1 个答案:

答案 0 :(得分:1)

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

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

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

pdf_search "your text"