问题描述
我以 doc 格式存储了许多文件,这些文件只能在我的 mac 上使用 libreoffice 打开。
命令:
./soffice --headless --convert-to docx --outdir /home/user ~/Downloads/*.doc
完全按照它应该做的:它将所有 *.doc
文件转换为 libreoffice *.docx
文件。
有没有办法从起始目录中搜索所有文件夹,并让“soffice”在每个文件夹中完成其工作,将新版本 (*.docx
) 准确存储在原始 ({{ 1}}) 被发现。
不幸的是,我不精通苹果脚本或终端来完成这项工作。然而,数百个文件夹中的 8000 个 doc 文件需要更新到 docx。
感谢您的帮助。
解决方法
有什么方法可以从起始目录中搜索所有文件夹,并让“soffice”在每个文件夹中完成其工作,将新版本 (.docx) 准确存储在原始目录 ( em>.doc) 已找到。
这实际上可以在终端中使用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
command 的作用,简而言之,就是在 分层目录结构中查找所有 .doc
文件 '/path/to/directory'
的 em> 并在包含 .doc
文件 的每个 子目录 中执行 command 并转换每个位于其子目录中。
注意事项:
在终端中运行命令之前,始终确保您有适当的备份,并且输入的命令将产生所需的行为!
-
这个命令假定已经没有
.docx
文件与.doc
具有相同的名称 子目录中的文件,因为它会自动覆盖与名称具有相同名称的任何现有.docx
文件.doc
文件。据我所知,soffice
command 不提供不覆盖现有文件的 选项。如果这会成为一个问题,则需要不同的解决方案。