bash + sed :
for f in p[0-9]*.fasta; do
pfx="${f%%_*}"
sed -i "s/^>NODE/>$pfx/" "$f"
done
-
pfx="${f%%_*}"- trunca a parte direita do nome do arquivo até o último_; atribua o resultado à variávelpfx -
sed -i "s/^>NODE/>$pfx/"- substitua>NODEsubstring pela variável$pfxin-place