한 디렉토리에 동시에 여러 디렉토리를 만드는 방법은 무엇입니까?

한 디렉토리에 동시에 여러 디렉토리를 만드는 방법은 무엇입니까?

mkdir을 사용하면 각 디렉토리를 만들 수 있다는 것을 알고 있습니다 mkdir A B C D E F. 모든 문자나 숫자를 입력하지 않고 어떻게 AZ 또는 1-100 디렉터리를 만들 수 있나요?

답변1

구문은 {}Bash 구문이며 구조와 관련이 없습니다 for.

mkdir {A..Z}

그 자체로 충분합니다.

http://www.gnu.org/software/bash/manual/bashref.html#Brace-확장

답변2

for루프를 사용하는 것이 아마도 가장 쉬울 것입니다.

for char in {A..Z}; do
    mkdir $char
done

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

하지만 최소한 bash 3.0이 필요합니다. 그렇지 않으면 다음과 같은 것을 사용해야 합니다.seq

답변3

더 복잡한 조합을 수행할 수도 있습니다( 나중에 정리할 필요가 없도록 echo대신 다음을 사용해 보십시오).mkdir

비교하다

$ echo pre-{{F..G},{3..4},{m..n}}-post
pre-F-post pre-G-post pre-3-post pre-4-post pre-m-post pre-n-post

도착하다

$ echo pre-{F..G}{3..4}{m..n}-post
pre-F3m-post pre-F3n-post pre-F4m-post pre-F4n-post pre-G3m-post pre-G3n-post
pre-G4m-post pre-G4n-post

Bash 4가 있다면 시도해 보세요.

$ echo file{0001..10}
file0001 file0002 file0003 file0004 file0005 file0006 file0007 file0008 file0009
file0010

그리고

$ echo file{0001..10..2}
file0001 file0003 file0005 file0007 file0009

답변4

YAA (또 다른 답변입니다;)

아래에, 당신은 많은 일을 할 수 있습니다! 간단한 예:

mkdir -p /tmp/mkdirdemo/1stLev_{R..T}{0..2}/2ndL_{one,two,three}_{a..c}{a..z}/3rd_{30..42}

이렇게 하면 2106개의 하위 디렉터리와 27378개의 세 번째 수준 하위 디렉터리가 포함된 9개의 디렉터리가 생성됩니다.

ls -d /tmp/mkdirdemo/1stLev_*/*/*|wc -l
27378
find /tmp/mkdirdemo -mindepth 3 -type d | wc -l
27378

$ find /tmp/mkdirdemo -mindepth 3 -type d|sort|sed -ne '1,2p;27377,$p;3s/.*/.../p'
/tmp/mkdirdemo/1stLev_R0/2ndL_one_aa/3rd_30
/tmp/mkdirdemo/1stLev_R0/2ndL_one_aa/3rd_31
...
/tmp/mkdirdemo/1stLev_T2/2ndL_two_cz/3rd_41
/tmp/mkdirdemo/1stLev_T2/2ndL_two_cz/3rd_42

관련 정보