Com o GNU sed
:
sed -s '1F;6,$!d' -- *.txt > output
Portável, você pode usar awk
:
awk 'FNR == 1 {print FILENAME}; FNR>=6' ./*.txt > output
(note que, em ambos os casos, arquivos ocultos são excluídos).
Arquivos vazios não serão referenciados, mas arquivos com menos de 6 linhas serão. Se você não quer ouvir sobre isso, você pode fazer:
sed -s '6F;6,$!d' -- *.txt > output
awk 'FNR == 6 {print FILENAME}; FNR>=6' ./*.txt > output
Ou se você quiser ver todos os arquivos:
for f in *.txt; do
printf '%s\n' "$f"
tail -n +6 < "$f"
done > output
Com o GNU tail
, você também faz:
$ tail -vn +6 -- *.txt
==> a.txt <==
6
7
8
9
10
==> b.txt <==
6
7
8
9
10