Когда член семьи начал использовать Устройство записи Libreoffice на Ubuntu, они использовали конкретный документ много раз в качестве начальной точки для новых документов. Впоследствии эти документы самостоятельно использовались в качестве начальных точек много раз еще для большего количества документов. К сожалению, член семьи не знал о поле "Title" для этих документов.
Конечный результат, теперь у них есть сотни документов с поддельным содержанием в поле "Title", все равно. Кроме, после того, как они узнали об этом, они начали фиксировать поле Title, таким образом, не каждый документ имеет эту проблему. Только большинство из них.
Есть ли командная строка / пакет / терминальный путь к
Выполнение его, документ документом непрактичен, потому что существуют так многие.
Поиск ask.libreoffice.org не привел к ответу.
Этот сценарий (эта версия), кажется, делает это.
#!/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