for LINE in {1..50}; do
for FILE in {1..1000}; do
sed -n "${LINE}p" "${FILE}.dat" >>"~/Escritorio/${LINE}.dat"
done
done
No seu script você está usando aspas simples para a expressão sed, as variáveis não expandem entre aspas simples, você precisa usar aspas duplas.
Também há um forro com o awk que pode fazer o mesmo:
awk 'FNR<=50 {filename=sprintf("results/%d.dat", FNR); print >> filename; close(filename)}' *.dat
Basta criar o diretório de resultados ou alterá-lo no comando para outro, ~
não expande para a página inicial.