Você pode usar a opção grep
-f
( --file
), com a substituição do processo para "regexify" alguns dos padrões. Por exemplo:
find . -type f | grep -Ev '(\.idea|\.git)' |
grep -v -f <(sed 's/\([.|]\)/\/g; s/\?/./g ; s/\*/.*/g' .gitignore) |
while IFS= read -r file ; do
# Do something with "$file"
done