Linux

將多個 .xls 格式文件轉換為 .xlsx 格式

  • July 19, 2022

我是 Linux 新手。我知道有一些方法可以通過終端在 Linux 中的文件格式之間進行轉換。但是有什麼方法可以實現以下目標嗎?

我有 3 個文件夾,在這些文件夾中,還有 15 個文件夾。這些文件夾中的每一個都有 12 個 .xls 格式的文件,以及一些其他的 .R 文件和 pdf 文件。有沒有辦法創建這 3 個文件夾的精確副本,其中所有 .xls 都轉換為 .xlsx 格式?

如果以下內容似乎太不重要,那麼將一個文件夾中的所有 .xls 文件轉換為 .xlsx 文件格式的方法是什麼?然後我可以複製上述內容。

注意:我沒有 LibreOffice,我使用 WPS。如果以下需要 LibreOffice,我可以根據需要安裝它。

這將需要libreoffice

從這個 Stack Overflow 問題Unix command to convert xls file into xlsx file?

libreoffice --convert-to xlsx my.xls --headless

請注意,該--convert-to選項意味著該--headless選項(當上面的 SO 答案是在 2014 年編寫時,它在 Libreoffice 版本 4.2.3 中沒有,但至少從 2018 年的 Libreoffice 6 開始就這樣做了,而且可能比這更長)。將它添加到命令行並沒有什麼壞處,但這不是必需的。

然後你可以將它集成到一個find命令中:

find . -type f -name "*.xls" -exec libreoffice --convert-to xlsx {} \;

此命令將在目前目錄中查找名稱以 結尾的文件.xls並執行替換{}為文件名的命令。

man libreoffice指出:

--convert-to output_file_extension[:output_filter_name] [--outdir output_dir] file...

批量轉換文件。如果 --outdir 未指定,則目前工作目錄用作轉換文件的輸出目錄。這意味著--headless

例子:

 --convert-to pdf *.doc

將所有 .doc 文件轉換為 PDF。

 --convert-to pdf:writer_pdf_Export --outdir /home/user *.doc

使用 Writer PDF 導出對話框中的設置將所有 .doc 文件轉換為 PDF,並將它們保存在 /home/user 中。

來自評論中的@cas,

libreoffice 可以採用多個文件名參數(手冊頁中的範例顯示了這一點),因此以 find 執行會更快。-type f -name ‘*.xls’ -exec libreoffice –convert-to xlsx {} + - 只需要執行一次 libreoffice 而不是每個文件一次

find . -type f -name '*.xls' -exec libreoffice --convert-to xlsx {} +

引用自:https://unix.stackexchange.com/questions/710365