如何使用一个命令将所有pdf文件转换为文本(在文件夹内)?

如何使用一个命令将所有pdf文件转换为文本(在文件夹内)?

我知道我可以像这样逐个将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

相关内容