Tôi đã tìm thấy một cách để làm điều này trong câu hỏi này: Inkscape - Vẽ trung tâm đến trang thông qua dòng lệnh / thiết bị đầu cuối
Với "foo.svg" là hình ảnh cần chỉnh sửa:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit foo.svg
Để chỉnh sửa tất cả các hình ảnh svg trong thư mục hiện tại:
inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileClose *.svg
Nhưng lệnh thứ hai này sẽ mở ra rất nhiều cửa sổ, điều này sẽ khiến máy tính của bạn gặp sự cố nếu bạn chỉnh sửa quá nhiều hình ảnh. Chỉ dành cho Linux , lệnh này sẽ hoạt động tốt hơn:
for img in $(ls *.svg) ; do inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; done
Đối với lệnh trên, nếu bất kỳ tệp nào là liên kết tượng trưng, Inkscape sẽ chỉnh sửa tệp đích mà liên kết tượng trưng trỏ tới. Nếu bạn không muốn Inkscape làm điều này, bạn có thể lọc bất kỳ liên kết tượng trưng nào bằng lệnh này:
for img in $(ls *.svg) ; do if [[ $(readlink $img) == "" ]] ; then inkscape --verb=EditSelectAll --verb=AlignHorizontalCenter --verb=AlignVerticalCenter --verb=FileSave --verb=FileQuit $img ; fi ; done
Trong khi tôi đang ở đó, tôi cũng có thể đăng kịch bản bash tôi đã làm cho việc này:
#!/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
Tôi gọi nó inkscape-center
và chạy nó như thế này:
inkscape-center <file-or-directory>
Phải mất nhiều đối số như bạn muốn, vì vậy bạn có thể làm một cái gì đó như thế này:
inkscape-center 1st.svg 2nd.svg 3rd.svg 4th.svg
Hãy cẩn thận - Nếu bạn chỉ định một thư mục thay vì một tệp, nó sẽ chỉnh sửa mọi tệp svg trong thư mục đó.