最近,一位朋友天真地问我计算机世界中到底共有多少种文件格式。我半认真半开玩笑地回应,"一个汤碗装满海滩沙子后对应的沙粒的总数也就是这个世界上文件格式的总数。"
好吧,自然没有那么多的文件格式(https://en.wikipedia.org/wiki/List_of_file_formats)。即便如此,你可能从未听说过像维基百科上所列举的那么多的常用的文件格式。现实情况是,你会永远看不到而且也永远不会使用那么多的文件类型。然而,如果你想要或需要实现文件格式之间的相互转换,那么确实存在不少这方面的工具程序供你选用。
下面,让我们来学习三种流行的Linux平台上的命令行文件类型转换工具。
Pandoc
所有我认识的使用标记语言的用户都说Pandoc(http://pandoc.org/)是转换这些语言的最常用工具。其实,这里有一个很好的理由:Pandoc不只是支持实现一些非常漂亮的转换,而且转换速度也非常快。
你是否有一个Markdown格式的文件想要转换为LibreOffice Writer文档格式?或者,有一个LaTeX文档你想要转换成一个EPUB文档?或者,也许你有一个HTML文件想转换成一个幻灯片。Pandoc能够胜任所有这些任务;当然,还有更多的功能。
下面给出的是使用Pandoc进行简单的文件格式转换的一个例子(在本例中实现从HTML格式转换为reStructuredText格式):
pandoc -t rst myFile.html -o myFile.rst
其实,你不只是限于直接转换。例如,你还可以向生成的结果文件中添加内容表格、印刷引用、自定义标题及语法高亮显示等。有关细节,请查阅Pandoc的参考文档(http://pandoc.org/MANUAL.html#options)。
然而,需要注意的是,Pandoc只能够处理基于文本的文件。如果你有一个二进制文件,如字处理器文档文件时,会发生什么呢?在命令行运行时将显示用户提供的是一个意想不到的文件源这样的提示。
LibreOffice
您可能会想,"停住!LibreOffice(http://libreoffice.org/)是一个GUI应用程序。不错,的确如此。但是,很多人不知道的是,你也可以从命令行运行LibreOffice来快速转换一个或多个文件。
那么,如何使用LibreOffice呢?举例来说,若要使用LibreOffice把一组幻灯片转换成PDF,你可以使用如下命令行内容:
soffice --headless --convert-to pdf mySlides.odp
在此,你只需将pdf扩展名替换成任何你想要转换的文件格式的扩展名即可。至于--headless选项,其作用是防止在运行上述命令时在您的桌面上打开一个空的LibreOffice窗口。
在命令行上使用LibreOffice转换单个文件格式有点小题大做。然而,在命令行下一次转换多个文件是一种不错的方式。例如,如果你想要将某文件夹中所有的微软Word文档转换为LibreOffice Writer文件格式,你只要使用如下命令即可:
soffice --headless --convert-to odt *.docx
这种命令行方式转换所需要的时间远远少于在LibreOffice Writer软件中打开所有这些文件并手动进行转换的时间。
FFmpeg
如果说Pandoc是实现标记语言之间进行转换的瑞士军刀,那么FFmpeg就相当于Pandoc在音频和视频格式文件转换领域的"瑞士军刀"。
FFmpeg是一组库和可执行文件的集合,借助于此工具你能够实现几乎任何格式文件间的相互转换。
下面给出的是使用FFmpeg把一个AVI格式的视频文件转换为一个Ogg格式的视频文件的使用举例:
ffmpeg -i myVideo.avi myvideo.ogg
其实,FFmpeg的功能比这要复杂的多。例如,你可以设置视频的帧速率并向其中添加字幕,更改纵横比,改变音频,以及更多的控制。
如果你选择使用多个控制选项时,命令行就会变得相当拥挤。特别是,当你只使用FFmpeg的如上述这样少数几个选项时,很容易忘记另外一些选项。在此,建议你经常阅读一下有关此工具的帮助文件,地址是https://ffmpeg.org/ffmpeg.html。
你也有自己最喜欢的命令行文件转换工具吗?希望您也能与我们一起分享吧。