【发布时间】:2020-08-05 12:45:01
【问题描述】:
所以.. 我的任务是使用 lowriter 将一堆 *.doc 文件转换为 *.pdf
我想做的是就地执行此操作,但由于无法使用lowriter 执行此操作,我想我会捕获原始文件和路径,捕获转换,然后移动转换后的文件到原始路径,然后删除原来的*.doc
问题是我的sed 和或awk 充其量是弱的;)所以我无法弄清楚如何从输出中“捕获”转换后的文件名。
我的代码:
#!/bin/bash
FILES=/my/path/**/*.doc
shopt -s globstar
for f in $FILES; do
the_file=$f;
the_orig_dir=$(dirname "$the_file") ;
converted=$(lowriter --headless --convert-to pdf "$the_file");
echo $converted;
done;
输出是:
convert /my/path/Archives/Ally/Heavenly Shop.doc -> /my/Heavenly Shop.pdf using filter : writer_pdf_Export
convert /my/path/Archives/Ally2/Solutions Shop.doc -> /my/Solutions Shop.pdf using filter : writer_pdf_Export
convert /my/path/Archives/Ally3/Xpress Shop.doc -> /my/Xpress Shop.pdf using filter : writer_pdf_Export
我需要做的是在-> 之后和: 之前捕获转换文件的路径/文件名。我只是不知道我该怎么做。谁能告诉我?
【问题讨论】:
-
我以前从未听说过
lowriter,但它真的没有选项只输出新文件路径或给你一个选项来指定输出文件或将它的输出发送到标准输出(所以你可以重定向到一个输出文件名)? -
它没有就地转换的方法...它输出我在问题中发布的内容...
-
我不是在谈论转换“就地”,而是在讨论控制输出去向的选项。另外 - 在调用
lowriter之前,您是否已经知道输出文件名?看起来总是/my/$(basename "$the_file")。 -
那将是原始文件。不是转换后的文件。是的,您可以指定输出目录,但不能指定输出文件名。
-
顺便说一句,所有尾随分号都是无用的。为什么你调用你的循环变量
f,然后将它复制到另一个变量?如果您需要,请使用for the_file in。
标签: bash awk sed libreoffice libreoffice-writer