I had a bunch of ISO images lying on my disk, and wanted to compress them as CSO to spare toom on my SD cards. I stumbled upon pspshrink which is a nice command-line PSP ISO compressor for Linux. Building it on my desktop was a trivial task.
Next I wrote the following Bash script to automate compression:
#!/bin/bash EXEC_PATH="`pwd`" echo -e "Executing in $EXEC_PATH" ISO_FOLDER=iso CSO_FOLDER=cso COMPRESS="$EXEC_PATH/pspshrink-1.1.2/pspshrink 9" while read r; do DIR="`dirname "$r"`" pushd "$DIR" ROM="`basename "$DIR"`" # US rom? US=`expr match "$ROM" '.*_US'` if [ "$US" -gt 0 ]; then ROM="`expr substr "$ROM" 1 "$US"`" else # EU rom? EU=`expr match "$ROM" '.*_EU'` if [ "$EU" -gt 0 ]; then ROM="`expr substr "$ROM" 1 "$EU"`" fi fi echo -e "\n########## Start $ROM" unrar e -o+ "$r" rename -v 's/\.ISO/.iso/' *.ISO ISO="`find -name "*.iso"`" CSO=""$EXEC_PATH"/"$CSO_FOLDER"/"$ROM".cso" if [ -f "$CSO" ]; then echo -e "Skip existing "$CSO"" else $COMPRESS "$ISO" "$CSO" fi rm -vf *.r* popd echo -e "\n########## End $ROM" done < <(find $EXEC_PATH/$ISO_FOLDER -name "*.rar" | sort)
Worked like a charm!
And finally a small script, recycling the same base loop, that checks for missing ROMs (the compress script handles only RAR archives).
#!/bin/bash EXEC_PATH="`pwd`" echo -e "Executing in $EXEC_PATH" ISO_FOLDER=iso CSO_FOLDER=cso while read d; do ROM="`basename "$d"`" # US rom? US=`expr match "$ROM" '.*_US'` if [ "$US" -gt 0 ]; then ROM="`expr substr "$ROM" 1 "$US"`" else # EU rom? EU=`expr match "$ROM" '.*_EU'` if [ "$EU" -gt 0 ]; then ROM="`expr substr "$ROM" 1 "$EU"`" fi fi CSO=""$EXEC_PATH"/"$CSO_FOLDER"/"$ROM".cso" if [ -f "$CSO" ]; then echo -e "[OK] "$CSO"" else echo -e "[KO] "$CSO"" fi done < <(ls -ld $EXEC_PATH/$ISO_FOLDER/* | sort)