Обработайте модификацию файла Устройства записи Libreoffice в пакетном режиме

Когда член семьи начал использовать Устройство записи Libreoffice на Ubuntu, они использовали конкретный документ много раз в качестве начальной точки для новых документов. Впоследствии эти документы самостоятельно использовались в качестве начальных точек много раз еще для большего количества документов. К сожалению, член семьи не знал о поле "Title" для этих документов.

Конечный результат, теперь у них есть сотни документов с поддельным содержанием в поле "Title", все равно. Кроме, после того, как они узнали об этом, они начали фиксировать поле Title, таким образом, не каждый документ имеет эту проблему. Только большинство из них.

Есть ли командная строка / пакет / терминальный путь к

  1. выберите незаконные документы
  2. замените поле Title пустым местом

Выполнение его, документ документом непрактичен, потому что существуют так многие.

Поиск ask.libreoffice.org не привел к ответу.

0
задан 24 July 2018 в 08:25

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
1
ответ дан 28 October 2019 в 07:14

Другие вопросы по тегам:

Похожие вопросы: