Na ausência de dos2unix
- qual seria o caminho ideal, tente:
find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print0 | xargs -0 -iFILE sh -c 'echo >> FILE'
ou
find . -type f \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -exec sh -c 'echo >> {}' \;
Observe que o redirecionamento é sempre um problema - a substituição não ocorre como desejado sem o lançamento de um novo shell.
Como sua pergunta era sobre "sed", você também pode fazer isso como:
find . \( -name "*.cpp" -o -name "*.h" -o -name "*.hpp" \) -print0 | xargs -0 sed -i -e '$a\
\'
(Esse é um caractere de nova linha literal - não um \ n ou qualquer outra coisa - provavelmente melhor feito como copiar e colar - pois pode ser difícil digitar:).