Инвертировать структуру каталогов

Саммит разработчиков Ubuntu - это семантическое событие Ubuntu, в котором мы определяем фокус и планы нашей будущей версии Ubuntu.

Саммит разработчиков Ubuntu

] Мы всегда гордились тем, что саммит разработчиков Ubuntu доступен для тех, кто не может присутствовать лично. Прямые потоки, чат-каналы, микроблоги и многое другое приносят опыт UDS всем, независимо от того, где бы они ни находились.

1
задан 19 May 2016 в 06:47

2 ответа

Это должно делать то, что вы хотите в 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/.

0
ответ дан 23 May 2018 в 10:58

Недавно я столкнулся с такой же проблемой в ситуации, когда было нецелесообразно перечислять все папки вручную. Желая использовать скрипт 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##*//}.

0
ответ дан 23 May 2018 в 10:58

Другие вопросы по тегам:

Похожие вопросы: