转换当前文件夹中的多个文档文件

转换当前文件夹中的多个文档文件

我有一个名为 X 的文件夹,里面有许多文件夹和子文件夹。我想在 X 内的所有文件夹中搜索并查找特定文档类型。例如繁體并将每个文件转换为压缩文件文件。在这种情况下,我需要使用 libreoffice convert 选项,libreoffice --headless --convert-to xls但这里有个陷阱。转换后,每个转换后的文件都应与原始文件位于同一文件夹中繁體文件。

例子:

X/
 Folder 1/
 Folder 2/
         Folder 2.1/file.xlsx
 Folder 3/
 Folder 4/
         Folder 4.1/anotherFile.xlsx

转换后:

X/
 Folder 1/
 Folder 2/
         Folder 2.1/file.xls
         Folder 2.1/file.xlsx
 Folder 3/
 Folder 4/
         Folder 4.1/anotherFile.xls
         Folder 4.1/anotherFile.xlsx

新的压缩文件*在这种情况下,将转换到与原始文件相同的文件夹中繁體。这将在所有子文件夹内以及所有繁體已找到。

答案1

这是一个按照您描述的方式执行的 python 脚本。

为了方便起见,为了与其他转换命令一起使用,我在转换命令中输入之前定义了filepath+name和。这也使得将目标更改为文件当前目录以外的其他目录变得容易(如果出于某种原因您可能需要这样做)。destination

笔记:在某些情况下(比如我的情况),命令

libreoffice --headless --convert-to xls

仅在使用 sudo 时有效。如果是这种情况,您需要~/.config使用以下命令更改所有权:

sudo chown -R --reference="$HOME" ~/.config

如所述这里

剧本:

#!/usr/bin/python3

convert_dir = "/path/to/folder/tobeconverted"
import os
import subprocess

for root, dirs, files in os.walk(convert_dir):
    for name in files:
        if name.endswith(".xlsx"):
            # filepath+name
            file = root+"/"+name
            destination = root
            subprocess.Popen(["libreoffice", "--headless", "--convert-to", "xls", file, "--outdir", destination])
        else:
            pass

将其复制到一个空的文本文件中,替换文件顶部的目录,以 .py 扩展名保存并使用以下命令运行它:

python3 /path/to/scrip/script.py

但我很确定你知道这一点。:)

答案2

这对我有用:

cd X
find ./ -iname "*.xlsx" > /tmp/out
SAVEIFS=$IFS;
IFS=$(echo -en "\n\b");
while read line ;
do
   cd $(dirname $line);
   libreoffice --headless --convert-to xls $(basename $line);
   echo $PWD;
   cd -;
done < /tmp/out;
IFS=$SAVEIFS

相关内容