cbzcat(1)
This commit is contained in:
parent
29b44c8b48
commit
38204abcab
58
cbz/cbzcat
Executable file
58
cbz/cbzcat
Executable file
@ -0,0 +1,58 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -e
|
||||
|
||||
usage(){
|
||||
printf "Usage: %s [files...]\n" "$0"
|
||||
exit 64 # sysexits.h(3) EX_USAGE
|
||||
}
|
||||
|
||||
test -n "$2" \
|
||||
|| usage
|
||||
|
||||
set -x
|
||||
|
||||
d="$(mktemp -d)"
|
||||
mkdir "$d"/x
|
||||
|
||||
i=1 # index
|
||||
il=1 # index length in digits
|
||||
|
||||
for f in "$@"; do
|
||||
test -e "$f" \
|
||||
|| usage
|
||||
|
||||
unzip -d "$d"/x "$f"
|
||||
rm "$d"/x/*.xml
|
||||
|
||||
for g in "$d"/x/*; do
|
||||
# move file to indexed position
|
||||
printf '%s\n' "$g" \
|
||||
| sed 's|^.*\.||' \
|
||||
| xargs printf '%s/%s%s\n' "$d" "$i". \
|
||||
| xargs mv "$g"
|
||||
|
||||
# increment i
|
||||
i="$(printf '1 + %s\n' "$i" | bc)"
|
||||
|
||||
# if there aren't enough leading zeroes
|
||||
if ! printf '%s' "$i" \
|
||||
| wc -c \
|
||||
| xargs test "$il" =; then
|
||||
for g in "$d"/*
|
||||
do test "$g" = "$d"/x \
|
||||
|| printf '%s\n' "$g" \
|
||||
| sed 's|[^/]*$|0&|' \
|
||||
| xargs mv "$g"
|
||||
done
|
||||
# update index digit length
|
||||
il="$(printf '1 + %s\n' "$il" | bc)"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
rm -r "$d"/x
|
||||
|
||||
zip -Z deflate out.cbz "$d"/*
|
||||
|
||||
rm -r "$d"
|
Loading…
Reference in New Issue
Block a user