#!/bin/bash -
for file in "$dir"/*
do
if [ ! -d "$file" ]; then
"$@" "$file"
fi
done
Note que ele também exclui arquivos que são do tipo symlink e onde o symlink resolve um arquivo do tipo directory (que é provavelmente o que você quer).
Alternativa (dos comentários), verifique apenas os arquivos:
for file in "$dir"/*
do
if [ -f "$file" ]; then
"$@" "$file"
fi
done