Em seu comando, os diretórios são renomeados primeiro para o valor de var j , que é 2 , então você acaba com apenas uma cópia chamada 2 (conforme cada substitui a anterior). Depois que o processo for concluído, j será reatribuído para j+1 ( echo $j retornos 3 ) - ele não será incrementado.
Para fazer 59 cópias, você pode fazer isso:
for i in {2..60}; do cp -r -- P1 P"$i"; done
{2..60} se expande para 2 3 4 5 6 7 até 60
Para números de largura fixa (então, 02 vem antes de 11 na classificação) use printf :
for i in {2..60}; do cp -r -- P1 P$(printf %02d "$i"); done
Isso fornece P02 P03 P04 ... P10 , P11
Para renomeação incremental você pode fazer algo assim, assumindo que as cópias não são numeradas ...
j=0; for dir in /path/to/stuff/*; do mv -v -- "$dir" "$dir""$((++j))"; done
Formato de largura fixa:
j=0; for dir in /path/to/stuff/*; do printf -v new "$dir%02d" "$((++j))"; mv -v -- "$dir" "$new"; done
Talvez valha a pena tornar esse último mais legível ...
j=0
for dir in /where/my/stuff/is/*
do printf -v new "$dir%02d" "$((++j))"
mv -v -- "$dir" "$new"
done