Я нашел способ сделать это в этом вопросе: Inkscape - рисование по центру на странице через командную строку / терминал
С "foo.svg" в качестве изображения для редактирования:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit foo.svg
Чтобы отредактировать все изображения SVG в текущем каталоге:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileClose *.svg
Но эта вторая команда открывает массу окон, которые приведут к сбою компьютера, если вы редактируете слишком много изображений. Только для Linux эта команда будет работать лучше:
for img in $(ls *.svg) ; do inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; done
Для приведенной выше команды, если какой-либо из файлов является символической ссылкой, Inkscape отредактирует целевой файл, на который указывает символическая ссылка. Если вы не хотите, чтобы Inkscape делал это, вы можете отфильтровать любые символические ссылки с помощью этой команды:
for img in $(ls *.svg) ; do if [[ $(readlink $img) == "" ]] ; then inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; fi ; done
Пока я в этом, я мог бы также опубликовать скрипт bash, который я сделал для этого:
#!/bin/bash
# inkscape-center <file-or-directory>...
_analyse() {
if [ -d "${1}" ] ; then
_centerAll "${1}" ;
else
_center "${1}" ;
fi
}
_centerAll() {
cd "${1}" ;
for img in $(ls "*.svg") ; do
_filterSyms "${img}" ;
done
}
_filterSyms() {
if [[ $(readlink "${1}") == "" ]] ; then
_center "${1}"
fi
}
_center() {
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit "${1}"
}
for arg ; do
_analyse "${arg}" ;
done
Я позвонил inkscape-center
и запустил это так:
inkscape-center <file-or-directory>
Требуется столько аргументов, сколько вы хотите, так что вы можете сделать что-то вроде этого:
inkscape-center 1st.svg 2nd.svg 3rd.svg 4th.svg
Будьте осторожны - если вы укажете каталог вместо файла, он отредактирует каждый файл SVG в этом каталоге.