Полагаю, проблема в том, что глобусы оболочки bash не поддерживают диапазоны. По некоторым причинам, я думал, что они сделали. Неважно, Perl прекрасно поддерживает диапазоны:
perl -pi -e '
BEGIN { @ARGV = map "cmd_$_.sh", 1 .. 25; }
my ($index) = $ARGV =~ /(\d+)/;
s/\d+/$index/'
Немного неуклюже, но в любом случае это все один язык.