Добавить последовательные подкаталоги в последовательные каталоги

Мне нужно добавить подкаталоги в несколько каталогов. Пока у меня есть структура типа dog[11-20]-[A-L], и мне нужен подкаталог, который выглядит как dog[11-20]-[A-L]-1. Я хотел бы попытаться выполнить это с помощью как можно меньшего количества команд. Мои усилия с командой find и конвейером не сработали. Например, dog11-A мне нужен подкаталог с именем dog11-A-1, а для dog15-B мне нужен подкаталог dog15-B-1.


person FSUresearch    schedule 22.09.2014    source источник
comment
Вы пытаетесь создать все эти каталоги? Или просто создать каталог с суффиксом -1 для каждого существующего (без суффикса) каталога?   -  person Etan Reisner    schedule 22.09.2014
comment
Я пытаюсь создать их всех.   -  person FSUresearch    schedule 22.09.2014


Ответы (1)


for d in dog{11..20}-{A..L}; do
    mkdir -p "$d/$d-1"
done

Это также создаст родителя, если это необходимо. Вы также можете создать требуемые имена в массиве и передать его одному вызову mkdir. Если

for d in {11..20}; do
    for suffix in {A..L}; do
        base=dog$d-$suffix
        dirs+=("$base/$base-1")
    done
done
mkdir -p "${dirs[@]}"

Если это дает вам ошибку «слишком много аргументов», вы можете сделать большее количество агрегированных вызовов:

for d in {11..20}; do
    dirs=()
    for suffix in {A..L}; do
        base=dog$d-$suffix
        dirs+=("$base/$base-1")
    done
    mkdir -p "${dirs[@]}"
done
person chepner    schedule 22.09.2014
comment
Я проверю и подтвержу! Могу ли я добавить ту же группу файлов в эти подкаталоги? - person FSUresearch; 22.09.2014
comment
Если вы копируете группу файлов в каждый подкаталог, вам придется использовать первый вариант (один вызов mkdir на каталог); Я не отказываюсь от каких-либо команд, которые могут копировать набор файлов в несколько мест одновременно. - person chepner; 22.09.2014
comment
ПРОБЛЕМА: mkdir: невозможно создать каталог /-1': Permission deniedmkdir: cannot create directory /-1': Отказано в разрешении mkdir: невозможно создать каталог /-1': Permission denied mkdir: cannot create directory /-1': Отказано в разрешении mkdir: невозможно создать каталог /-1': Permission denied ./sdc.sh: line 8: syntax error near unexpected token for' ./sdc.sh: строка 8: `для суффикса в {A ..Л}; делать' - person FSUresearch; 22.09.2014
comment
совет? я написал скрипт, объединив верхнюю часть кода и нижнюю - person FSUresearch; 22.09.2014
comment
Я только что использовал нижнюю часть, и я получаю синтаксическую ошибку строки 4 рядом с суффиксом «для» и «для» в {A..L}; делать' - person FSUresearch; 22.09.2014