LibreOffice:递归转换文件夹和子文件夹中的文档

LibreOffice: recursively convert documents in folders and subfolders

我以 doc 格式存储了许多文件,我只能在我的 mac.

上使用 libreoffice 打开这些文件

命令:

 ./soffice --headless --convert-to docx --outdir /home/user ~/Downloads/*.doc

做它应该做的:它将所有 *.doc 文件转换为 libreoffice *.docx 文件。

我的问题是我有包含这些文件的文件夹和子文件夹。

有没有办法从起始目录搜索所有文件夹并让“soffice”在每个文件夹中完成其工作,将新版本 (*.docx) 准确存储在原始 ( *.doc) 被发现。

不幸的是,我不精通苹果脚本或终端来完成这项工作。然而,数百个文件夹中有 8000 个 doc 文件需要更新到 docx。

感谢您的帮助。

Is there any way to search through all the folders from a starting directory and to let "soffice" do its job in each of these folders, storing the new versions (.docx) exactly where the original (.doc) was found.

这实际上可以在终端中使用find 命令:

完成
find '/path/to/directory' -type f -iname '*.doc' -execdir /Applications/LibreOffice.app/Contents/MacOS/soffice --headless --convert-to docx '{}' \;

在上面的示例命令中,将'/path/to/directory'更改为目标目录的实际路径名 包含 子目录 包含 .doc 文件 .

这个 find 命令 的作用,简而言之,它是否找到所有 .doc 文件 '/path/to/directory' 分层目录结构 并在包含.doc files 并将每个文件转换到其 子目录.

中的位置

备注:

  • Terminalcommands 键入将产生所需的行为!

  • 这个命令假定没有.docx文件已经存在相同的名称作为子目录中的.doc文件,因为它会自动覆盖任何现有的.docxfiles.doc files 相同的 name。据我所知,soffice 命令 没有提供 选项 不覆盖现有文件。如果这将成为一个问题,那么将需要一个不同的解决方案。