9Mar/100
My favorite bash idiom
Stuart and I came up with a refinement to my favorite bash idiom today. It was:
find ... | while read FOO; do ...; done
as demonstrated in:
find . -name '*.mp3' -type f | while read MP3; do
ffmpeg -i $MP3 ${MP3%.mp3}.m4a
done
This handles whitespace (except newlines) in filenames. Except that ffmpeg is sharing stdin with while, which can cause some very funky problems. This is safer:
find ... | while read FOO; do echo | (
...
); done
and while you're at it, you might as well take into account the unlikely-but-possible corner case of a filename containing a newline:
find ... -print0 | while read -d $'\0' FOO; do echo | (
...
); done