我知道我可以像这样逐个将pdf文件转换为文本文件:
$ pdftotext filename.pdf
但是,是否存在一个命令可以进行这种转换,而无需指定单独的文件名,从而转换所有文件名?
我懂了这里,在维基百科上,"不能使用通配符 (*),例如 $ pdftotext *pdf,来转换多个文件,因为 pdftotext 只需要一个文件名。"
答案1
以下将转换当前目录中的所有文件:
for file in *.pdf; do pdftotext "$file" "$file.txt"; done
答案2
ls *.pdf | xargs -n1 pdftotext
xargs
通常是多次运行相同命令的快速解决方案,每次只需进行少量更改。该-n1
选项确保每次只将一个 pdf 文件传递给 pdftotext。
编辑:如果您担心文件名中的空格等,您可以使用以下替代方法:
find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
答案3
编写一个 bash 脚本
for f in *.pdf; do
pdftotext "$f"
done
或者在一行命令中输入如下命令:
for f in *.pdf; do pdftotext "$f"; done
希望这能有所帮助。我没有大量的 .pdf 文件来测试,但我使用此策略将 .flac 文件转换为 .ogg 文件。
答案4
for file in *.pdf; do pdftotext "$file" "$file.txt"; done
这一个输出样本.pdf.txt。
我尝试使用这个,按照 user2357111317 的建议,我也包括-布局保留文本的布局
for file in *.pdf; do pdftotext -layout "$file"; done