Usando awk
em uma única pasta
awk 'NR==1 {header=$_} FNR==1 && NR!=1 { $_ ~ $header getline; } {print}' *.dat > out
find
e awk
se você precisar de todos os arquivos na pasta atual e nas subpastas. Você pode substituir .
pela pasta desejada.
find . -type f -name "*.dat" -print0 | \
xargs -0 awk 'NR==1 {header=$_} FNR==1 && NR!=1 { $_ ~ $header getline; } {print}' > out
ou, como getline é ruim (thx @ fedorqui )
find . -type f -name "*.dat" -exec awk 'NR==1 || FNR!=1' {} + ;
Exemplo
% cat foo1.dat
a b c
1 2 3
% cat foo2.dat
a b c
4 5 6
% awk 'NR==1 {header=$_} FNR==1 && NR!=1 { $_ ~ $header getline; } {print}' *.dat > out
% cat out
a b c
1 2 3
4 5 6