我知道我可以像这样将pdf文件一一转换为文本文件:
$ pdftotext filename.pdf
但是,是否有一个命令可以执行该转换而无需指定单独的文件名来进行全部转换?
我在Wikipedia上看到“不能使用用于转换多个文件的通配符(*),例如$ pdftotext * pdf,因为pdftotext只需要一个文件名。”
我知道我可以像这样将pdf文件一一转换为文本文件:
$ pdftotext filename.pdf
但是,是否有一个命令可以执行该转换而无需指定单独的文件名来进行全部转换?
我在Wikipedia上看到“不能使用用于转换多个文件的通配符(*),例如$ pdftotext * pdf,因为pdftotext只需要一个文件名。”
Answers:
下面将转换当前目录中的所有文件:
for file in *.pdf; do pdftotext "$file" "$file.txt"; done
ls *.pdf | xargs -n1 pdftotext
xargs
通常是快速运行解决方案,可以多次运行同一命令,而每次更改都很小。该-n1
选项可确保一次仅将一个pdf文件传递给pdftotext。
编辑:如果您担心文件名等中的空格,则可以使用以下替代方法:
find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
ls *.pdf | xargs -L1 -I% pdftotext % %.txt
写一个bash脚本
for f in *.pdf; do
pdftotext "$f"
done
或在单行命令中键入它,如下所示:
for f in *.pdf; do pdftotext "$f"; done
我希望这有帮助。我没有大量的.pdfs可以对此进行测试,但是我使用此策略将.flac文件转换为.ogg文件。
首先,我必须感谢Sam和Ryan Thompson,以及所有其他答复者-我在这里的回答不过是与将其解决方案添加到Thunar的自定义操作的可能性有关的一种变体:
因此,与任何终端命令一样,可以将一个文件夹中所有pdf文件转换为文本的命令放在Thunar文件管理器的自定义操作列表中
这里的命令find . -name '*.pdf' -print0 | xargs -0 -n1 pdftotext
(来自Ryan Thompson)是我更喜欢使用的命令,但是它转弯很麻烦...请参阅下文...
...这是一个有趣的命令,请谨慎使用:它被执行为将所有pdf文件在触发位置转换为文本,因此,如果在主文件夹中错误触发了该文件,则会有一些不需要的内容效果:您所有的PDF都将转换为文本!
(我是这样测试的:在桌面上创建了一个名为“ test”的文件夹,并在其中创建了一个pdf文件,并在文件夹(/Desktop/test/a/b/c/e/f/g/h/i
)中创建了一系列包含相同pdf 的文件夹。在该命令中运行该命令/Desktop/test
会将所有pdf转换为“ i”文件夹。)
(我欢迎您就如何调整此命令以避免这种风险发表评论。)
用for file in *.pdf; do pdftotext "$file" "$file.txt"; done
来自Sam的另一个() 代替,可以避免此问题。
但是在某些情况下,人们可能会希望Ryan的解决方案真正起作用!
find
命令在子目录中搜索-maxdepth 1
。另外,当将其放入Thunar的自定义操作功能中时,您可能应该替换find .
为find %F
以允许Thunar正确传递所选目录的路径。