#!/bin/sh # Reads filenames on stdin, xz-compresses each in place. # Not optimal for "compress relatively few, large files" scenario! # How many xz's to run in parallel: procgroup="" while test "$#" != 0; do # Get it from -jNUM N="${1#-j}" if test "$N" = "$1"; then # Not -j - warn and ignore echo "parallel_xz: warning: unrecognized argument: '$1'" else procgroup="$N" fi shift done # If told to use only one cpu: test "$procgroup" || exec xargs -r xz test "$procgroup" = 1 && exec xargs -r xz # xz has some startup cost. If files are really small, # this cost might be significant. To combat this, # process several files (in sequence) by each xz process via -n 16: exec xargs -r -n 16 -P "$procgroup" xz