批量修改 Libreoffice Writer 文件

批量修改 Libreoffice Writer 文件

当家庭成员开始在 Ubuntu 上使用 Libreoffice Writer 时,他们会反复使用某个文档作为新文档的起点。随后,这些文档本身又被反复用作更多文档的起点。不幸的是,家庭成员不知道这些文档的“标题”字段。

最终结果是,现在他们有数百份文档的“标题”字段都含有虚假内容,全部一样。只不过,在他们了解到这一点后,他们开始修复标题字段,因此并非每份文档都存在此问题。只有大多数文档存在此问题。

是否有命令行/批处理/终端方式来

  1. 选择有问题的文件
  2. 删除标题字段

由于文件太多,逐一进行处理是不切实际的。

搜索 ask.libreoffice.org 没有得到答案。

答案1

这个脚本(这个版本)似乎可以做到这一点。

#!/bin/bash
#
#   Last updated: "Sun Jul 29 23:43:59 2018"
#
# Replace "Unwanted content" with "Desired Stuff" in the document's "Title" (File->Properties->Title)
# **WARNING** Leaves original unmodified "<file>" in "<file>~". Overwrites previous "<file>~"
# modified to remember the contents of the zip archive, and zip
# every one back together
if [[ "$1" = "-d" ]] ; then
    set -x
    shift
fi
while [[ "$1" ]] ; do
    file="$1"
    shift
    contents=$(unzip -l "$file" | tail -n +4 | awk '{print $4}' | tr "\n" " ")
    dirs=$(unzip -l "$file" | tail -n +4 | awk '{print $4}' | grep / | cut -d/ -f1 | uniq)
    unzip -qq "$file"
    sed -e 's/dc:title>Unwanted content/dc:title>Desired stuff/' meta.xml >meta.xml.new
    mv -f meta.xml.new meta.xml
    mv -f "$file" "${file}~"
    zip --quiet -o "$file" -r $contents
    rm -r $contents $dirs
    cmp --quiet "$file" "${file}~"
    if [[ $? -eq 0 ]] ; then
        mv -f "${file}~" "$file"
    fi
done

制作名为可执行文件的脚本FixMyTitle并将其存储在您的目录中$PATH$HOME/bin这样就好了。

然后,使用find(读取man find)将文件的名称传递给FixMyTitle

find $HOME -type f -name '*.odt' -print0 | \
    xargs -0 FixMyTitle

稍后,通过以下方式清理过时的原件:

find $HOME -type f -iname '*.odt~' -delete

相关内容