Prefer a pipeline to a loop
A loop that runs one command per file is often one command with a list. grep over a glob or xargs does the work in one process, and the loop version is slower and harder to read.
Loop variables are global
A shell loop leaves its variable set after it finishes, which bites when the same name is reused later. Use a name that says what it holds, and the leftover value stops being a mystery.