將多個 .xls 格式文件轉換為 .xlsx 格式
我是 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
並執行替換{}
為文件名的命令。--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 {} +