Jak utworzyć 100 podkatalogów za pomocą skryptu Bash?

14

Próbuję utworzyć 100 różnych podkatalogów w niektórych katalogach za pomocą skryptu Bash.

Zaczynam od podstawowej forpętli (to znaczy for f in $FILES;do mkdir f done), ale to nie działa.

Aby wyjaśnić, co chcę zrobić: staram się uzyskać 100 różnych podkatalogów w bieżących katalogach (tutaj używam home='pwd'). Na przykład w katalogu /home/paul/main_directory/.

A tutaj chciałbym utworzyć 100 katalogów o indeksie od 1 do 100, takich jak:

subdirectory_1
subdirectory_2
subdirectory_3
subdirectory_4
.
.
.
subdirectory_100
Pavol Namer
źródło

Odpowiedzi:

19

Aby odpowiedzieć na twoje pytanie za pomocą sugerowanej forpętli - działa również nawias klamrowy wspomniany przez steeldriver:

for i in {1..100}; do mkdir subdirectory_$i; done

Aby odpowiedzieć na zaktualizowane pytanie:

Zarówno - odpowiedź steeldriver, jak i ta przeze mnie, mają być jedno-liniowe.

Jeśli chcesz użyć tego w skrypcie Bash, prawdopodobnie napiszesz to w następujący sposób:

#!/bin/bash
for i in {1..100}
do
    mkdir subdirectory_$i
done
rkn
źródło
przepraszam, nie chcę edytować twojej odpowiedzi, chcę ją skomentować ... ouch ...
Pavol Namer
Dziękuję bardzo za szybką odpowiedź, teraz mam. Wielokrotnie dziękuję, to mnie
oszczędza
1
alternatywa dla przypadków, w których nie masz pełnej BASH, ale tylko a / bin / sh, możesz użyć seqzamiast tego: for i in $(seq 1 100); do mkdir dir_$i; done
Daniel Llewellyn
Tworzy katalog „{1..3}”, gdy próbowano zrobić to samo 3 razy. Jakieś wskazówki, co mogło pójść nie tak?
soufrk
40

Najłatwiejszym sposobem jest prawdopodobnie użycie nawiasów klamrowych

mkdir subdirectory_{1..100}
steeldriver
źródło
8

Aby dodać coś do naprawdę imponującej odpowiedzi udzielonej przez steeldriver:

Możesz tworzyć katalogi, które sortują się „poprawnie”, wypełniając zero.

mkdir subdirectory_{001..100}

(Jeśli podoba ci się ta odpowiedź, proszę upomnieć się o odpowiedź steeldriver. Nie mogę jeszcze komentować lub zrobiłbym to.)

MDeBusk
źródło
Tworzy podkatalog o nazwie „podkatalog_ {001..100}”. Wszelkie wskazówki co do tego, co mogło pójść nie tak.
soufrk
Brak pomysłu. Tutaj działa mi dobrze. Czy używasz bash?
MDeBusk