Add "find | while" syntax

John Meyer
2022-06-16 12:51:38 -05:00
parent 4840bcb776
commit 90cca02015

@@ -30,6 +30,18 @@ done < <(find mydir -mtime -7 -name '*.mp3' -print0)
echo "Played $count files" echo "Played $count files"
``` ```
> Equivalently:
>
> ```sh
> find mydir -mtime -7 -name '*.mp3' -print0 | while IFS= read -r -d '' file
> do
> let count++
> echo "Playing file no. $count"
> play "$file"
> done
> echo "Played $count files"
> ```
In usage it's very similar to the `for` loop: it gets its output from a `find` statement, it executes a shell script body, it allows updating/aggregating variables, and the variables are available when the loop ends. In usage it's very similar to the `for` loop: it gets its output from a `find` statement, it executes a shell script body, it allows updating/aggregating variables, and the variables are available when the loop ends.
It requires Bash, and works with GNU, Busybox, OS X, FreeBSD and OpenBSD find, but not POSIX find. It requires Bash, and works with GNU, Busybox, OS X, FreeBSD and OpenBSD find, but not POSIX find.