Recently Written · git

sh

Small shell and Python scripts

git clone https://github.com/equwal/sh

Log | Files | Refs


commit c80b253c0608a1c03bae6b6f046bfe68cd908396
equwal <13551856+equwal@users.noreply.github.com>
2026-10-04 23:02:59 -0700

group4ify: POSIX sh, trap etc.

 group4ify     | 24 +++++++++++-------------
 group4ify-aux |  1 +
 2 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/group4ify b/group4ify
index 3674ca6..5284cfc 100755
--- a/group4ify
+++ b/group4ify
@@ -1,15 +1,13 @@
-#!/bin/bash
-TEMP="$(mktemp)"
-[ -e "$TEMP" ] && rm "$TEMP"
-mkdir "$TEMP"
-BASE="$(basename "$1")"
-cp "$1" "$TEMP"
+#!/bin/sh
+# Recompress every page of a scanned PDF as bilevel CCITT Group 4 (via group4ify-aux).
+# Usage: group4ify FILE.pdf   (writes ./FILE.pdf-group4.pdf)
+set -e
+TEMP="$(mktemp -d)"
+trap 'rm -r "$TEMP"' EXIT
+OUT="$PWD/$(basename "$1")-group4.pdf"
+pdfseparate "$1" "$TEMP"/%d.pdf
 
 cd "$TEMP"
-pdfseparate "$PWD"/"$1" %d.pdf
-rm "$BASE"
-find . -name '*.pdf' -print0 | grep -z -v group4 | xargs -0 -L1 group4ify-aux
-cat <(find . -name '*-group4.pdf' | sed 's:^./::' | sort -h | sed 's:^\|$:":g') <(echo "$BASE"-group4.pdf) | xargs pdfunite
-cd -
-mv "$TEMP"/"$BASE"-group4.pdf .
-rm -r "$TEMP"
+for p in *.pdf; do group4ify-aux "$p"; done
+# shellcheck disable=SC2046 # page files are N.pdf-group4.pdf: no spaces
+pdfunite $(printf '%s\n' *-group4.pdf | sort -n) "$OUT"
diff --git a/group4ify-aux b/group4ify-aux
index 02daa1b..a8faf3a 100755
--- a/group4ify-aux
+++ b/group4ify-aux
@@ -1,2 +1,3 @@
 #!/bin/sh
+# Usage: group4ify-aux FILE.pdf   (writes FILE.pdf-group4.pdf, bilevel CCITT Group 4 at 300 dpi)
 convert -density 300 -compress Group4 -type bilevel "$1" "$1"-group4.pdf