Здесь есть две проблемы. Во-первых, вы объявляете переменную «i», но используете «$ file», который не существует. Даже если это произойдет, вторая проблема заключается в том, что bash читает «слева направо». Это означает, что он сначала увидит «> $ file» и перезапишет содержимое файла. Поэтому, если бы вы использовали правильные переменные, вы бы потеряли свои данные.
Итак, одна ошибка спасла вас от другой, вы счастливчик, счастливчик :)
Попробуйте что-то вроде:
for i in *.txt ; do fold -w 1 $i > sillytmpfile; mv sillytmpfile $i; done