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"
```
> 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.
It requires Bash, and works with GNU, Busybox, OS X, FreeBSD and OpenBSD find, but not POSIX find.