Как только вы удалите эхо, оно должно работать:
for i in *.txt do awk '$4 ~ /NM/{ sum += $2 } END{ print sum }' $i; done
Сбой при наличии текстовых файлов с пробелами, вы можете попробовать это:
find . -name '*.txt' -print0 | xargs --null -n 1 awk '$4 ~ /NM/{ sum += $2 } END{ print sum }'
Альтернатива для распечатки имен:
find . -name '*.txt' -print -exec awk '$4 ~ /NM/{ sum += $2 } END{ print sum }' {} \;
(В основном, make find выполняет awk напрямую, а также распечатывает имена файлов.