Znalazłem sposób na zrobienie tego w tym pytaniu: Inkscape - Wyśrodkuj rysunek na stronie za pomocą wiersza poleceń / terminala
Z „foo.svg” jako obrazem do edycji:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit foo.svg
Aby edytować wszystkie obrazy svg w bieżącym katalogu:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileClose *.svg
Ale to drugie polecenie otwiera mnóstwo okien, co spowoduje awarię komputera, jeśli edytujesz zbyt wiele obrazów. Tylko w systemie Linux to polecenie będzie działać lepiej:
for img in $(ls *.svg) ; do inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; done
W przypadku powyższego polecenia, jeśli którykolwiek z plików jest dowiązaniami symbolicznymi, Inkscape edytuje plik docelowy, na który wskazuje dowiązanie symboliczne. Jeśli nie chcesz, aby Inkscape to zrobił, możesz odfiltrować wszelkie dowiązania symboliczne za pomocą tego polecenia:
for img in $(ls *.svg) ; do if [[ $(readlink $img) == "" ]] ; then inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; fi ; done
W tym momencie równie dobrze mogę opublikować skrypt bash, który dla tego stworzyłem:
#!/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
Zadzwoniłem inkscape-center
i uruchomiłem tak:
inkscape-center <file-or-directory>
Wymaga tyle argumentów, ile chcesz, więc możesz zrobić coś takiego:
inkscape-center 1st.svg 2nd.svg 3rd.svg 4th.svg
Uważaj - jeśli podasz katalog zamiast pliku, będzie on edytować każdy plik svg w tym katalogu.