Вы не сказали, но я предполагаю, что именно здесь возникает проблема:
ls -tr $FROM_DIRECTORY/MSCERC*.Z|head -2500 | \
xargs -i sh -c "mv {} $DESTINATION_DIRECTORY"
(Вы можете проверить это, добавив "set -x" в начало вашего скрипта.)
Проблема в том, что ядро имеет фиксированный максимальный размер общей длины командной строки, заданной для нового процесса, и превышение этого значения в команде ls
.Вы можете обойти это, не используя globbing и вместо этого используя grep
:
ls -tr $FROM_DIRECTORY/ | grep '/MSCERC\*\.Z$' |head -2500 | \
xargs -i sh -c "mv {} $DESTINATION_DIRECTORY"
(grep
использует регулярные выражения вместо globs, поэтому шаблон выглядит немного иначе.)