我有一个名为 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