我正在尝试运行以下命令以从所有 pdf 中提取文本
find *.pdf | awk '{system("pdftotext "$0)}'
但该死的某个疯子在文件名中加了空格,我该如何顺利处理呢?
最佳答案
awk 在其中扮演什么角色?或许您应该让 find
自行执行。
find . -name \*.pdf -exec /path/to/pdftotext {} \;
或者,如果您真的坚持假设文件名作为 stdout 可以安全地找到(您已经证明它们不是简单地通过问这个问题),那么将文件名放在引号中。这将起作用:
find . -name \*.pdf -print | awk '{cmd=sprintf("pdftotext \"%s\"", $0);system(cmd);}'
关于awk 系统命令,参数中有空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11088576/