pdftotext子目录中的所有文件(如果尚不存在)

时间:2017-05-20 14:16:52

标签: bash pdf while-loop find pdftotext

如果文本文件尚不存在,我需要pdftotext子目录中的所有文件。我试过了:

find . -name "*.pdf" | while read file; if [ ! -e $file.txt ] do pdftotext $file; done;

但是接收:-bash:意外令牌“完成”附近的语法错误

2 个答案:

答案 0 :(得分:3)

我建议:

find . -name "*.pdf" | while IFS= read -r file; do if [ ! -e "$file.txt" ]; then pdftotext "$file"; fi; done

请参阅:help whilehelp if

答案 1 :(得分:0)

不要将数据传输到shell;在 find内执行的shell循环。

script='
  for f in "$@"; do
    if ! [ -e "$f" ]; then
      pdftotext "$f"
    fi
  done
'
find . -name '*.pdf' -exec sh -c "$script" _ {} +

这适用于任何有效文件名,即使是包含换行符的文件名。 find每次调用时都会向脚本传递尽可能多的文件,并根据需要多次调用脚本来处理所有文件。