Саммит разработчиков Ubuntu - это семантическое событие Ubuntu, в котором мы определяем фокус и планы нашей будущей версии Ubuntu.
Саммит разработчиков Ubuntu
] Мы всегда гордились тем, что саммит разработчиков Ubuntu доступен для тех, кто не может присутствовать лично. Прямые потоки, чат-каналы, микроблоги и многое другое приносят опыт UDS всем, независимо от того, где бы они ни находились.
Это должно делать то, что вы хотите в bash:
#!/bin/bash
mkdir -p /path-to-second-new/{A,B,C,D}
for i in [1,2,3,4,5]
do
for j in [A,B,C,D]
do
cp -v /path-to-second/"$i"/"$j" /path-to-second-new/"$j"/"$i"
done
done
Ваша нормальная структура должна быть в /path-to-second-new/, а ваша начальная структура не затронута в /path-to-second/.
Недавно я столкнулся с такой же проблемой в ситуации, когда было нецелесообразно перечислять все папки вручную. Желая использовать скрипт bash, я придумал следующее:
for a in */; do
for b in $a/*/; do
dir=${b##*//}
mkdir -p $dir$a
mv $a$dir* $dir$a
done
rm -rf $a
done
Это динамически захватывает имена папок, создает новую иерархию, перемещает все файлы и удаляет старые папки.
Извлечение папки второго уровня требует немного взлома. Все имена каталогов $a заканчиваются на / (например, folder1/). Во втором for-loop я добавляю другую косую черту после $a (первая / в $a/*/), поэтому каждая запись $b будет выглядеть как folder1//folder2/. Эта двойная коса игнорируется Unix, поэтому я могу отфильтровать имя каталога, отсекая все до и включая эту двойную косую черту с помощью dir=${b##*//}.