Команды хвоста и кошки сделают это легко:
tail -n +1 $file > tmpfile
cat newfirstline tmpfile >$file
Оберните их в подходящий цикл и, возможно, используйте правильный и праведный временный файл вместо строгого временного имени файла. Я считаю, что bash и другие оболочки имеют синтаксис для создания временных файлов.
Параметр -n хвоста имеет две интерпретации в зависимости от того, имеет ли аргумент знак плюса. Если у него есть знак плюса, значит, это означает, что хвост файла начинается с данного номера строки. В противном случае число - это количество строк, включая последнюю строку, на которую должен выводиться хвост.