디렉토리에서 여러 디렉토리를 한 번에 만들려면 어떻게합니까?


25

mkdir mkdir A B C D E F을 사용하여 각 디렉토리를 만들 수 있습니다 . 각 문자 나 숫자를 입력하지 않고 AZ 또는 1-100 디렉토리를 만들려면 어떻게해야합니까?

답변:


18

for루프를 사용하는 것이 가장 쉽습니다 .

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

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

그래도 bash 3.0 이상이 필요합니다. 그렇지 않으면 당신은 같은 것을 사용해야합니다seq


1
마이클 고마워! 궁금해서 {A..Z}의 char에 대해 $ char 앞에 테스트를 추가해 보았습니다. mkdir test $ char로 나에게 디렉토리 test [AZ]를 주었다. 항상 배우기에 좋다
Steve Burdine

명심해야 할 것은 파일 이름을 나열하거나 *와 같은 와일드 카드와 함께 사용할 때 파일 이름이 정렬되는 방식입니다. '11'은 '2'보다 먼저 정렬됩니다. 모든 숫자가 앞에 오는 0과 같은 길이가되도록 배열하면 피할 수 있습니다. Dennis Williams는 bash 4에서이를 수행하는 방법을 보여 주지만 bash 4가없는 경우 스크립트를 코딩하여 수행 할 수 있습니다.
Joe

71

{}구문에 묶여 있지 배쉬 구문 for구조.

mkdir {A..Z}

그 자체로 충분합니다.

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


5
아, 훌륭합니다. 이것은 훨씬 더 좋은 대답입니다
Michael Mrozek

1
나는 이것을 잘 몰랐다!
반전

5
아름다움을 위해 +1, 스타일을 위해 +1, rcrowley를
Stefan

나에게 +500 현상금.
George Chalhoub

대단해! 방금 그것을 사용 :mkdir -p ./logs-{1..5}
Pranav 웃

8

당신은 또한 더 복잡한 조합 (이러한 시도 할 수있는 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

배쉬 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

7

Linux에서는 "seq"명령으로 일련의 숫자를 생성 할 수 있지만 모든 유닉스 시스템에는 존재하지 않습니다. 예를 들어 1에서 100 사이의 디렉토리를 생성하려면 다음을 수행하십시오.

mkdir `seq 1 100`

쉘 유틸리티를 사용하여 A에서 Z까지 디렉토리를 만들 수는 있지만

seq 65 90 \
    | while read foo; do printf "%b\n" `printf '\\\\x%x\n' $foo`; done \
    | xargs mkdir

아마도 Perl을 사용하는 것이 훨씬 덜 추한 것 같습니다.

perl -e 'foreach (ord "A"..ord "Z") { mkdir chr $_ }'

-1

mkdir direct{1..3}결과적으로 mkdir direct1 direct2 direct3등등. 동일{a..z}


2
이것은 기존의 세 가지 답변 내가 이미 언급 한 답변의 반복입니다
Jeff Schaller

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.