cd target_dir
dcomp="$(basename "$(pwd)")"
count=1
for file in *; do
ext="${file##*.}"
mv -v "$file" "$dcomp $(printf '%03d' "$count").$ext"
(( count++ ))
done
Isso pressupõe que você realmente deseja um espaço nos nomes dos arquivos de resultado, o que não é uma ideia maravilhosa. Você pode, claro, mudar o padrão dentro do loop para o que você quiser. Para fazer isso em vários diretórios, coloque tudo em um loop sobre eles.