Extends shell * and ? wildcards to allow inserting matched strings like Windows 'copy *.old =.new'
Some examples:
# Rename current files as old
doall 'mv *.cur *.old'
# Compress camcorder DV files
doall 'ffmpeg -i *.dv *.mp4'
# Move files into directories according to their extension
doall 'mv *.* $2/$1.$2'
# Symbolic links from vmlinuz.new to vmlinuz-5.12.6-foo, similarly config.new System.map.new
doall 'ln -s /boot/*-5.12.6-* /boot/$1.new'
# Hard link 3-character abbreviations for file extensions
doall 'ln *.???* $1.$2'
As shown above, instead of '=' to indicate insertions, doall uses either * or $1 etc.
doall -p (pretend mode) shows a list of commands instead of executing them
doall -i (interactive mode) asks for confirmation for each command in turn
doall -k (keep-running mode) ignores failing commands
Features
- Pure POSIX shell script except in pretend mode
- Simple syntax
- Correctly handles filenames containing special characters such as quotes, line feeds and semicolons