Моя первая мысль - Вы, вероятно, делают эту проблему слишком сложной. Однако это разрешимо.
Можно сделать что-то вроде этого с сумасшедшим циклом удара:
for i in /dir/*/file
do
j=${i%/file}
k=${j#/dir/}
cp $i %k-file
done
это использует несколько строковых операторов удара для извлечения количества исходного каталога.
Я гарантирую, что существуют waaay лучшие способы сделать это, это, что пришло на ум.