mkdir을 사용하여 여러 디렉터리 만들기

mkdir을 사용하여 여러 디렉터리 만들기

을 사용하여 많은 디렉토리를 만들고 싶습니다 mkdir. 각 디렉터리 이름은 접두사(문자열)와 색인(정수)으로 구성됩니다. 접두사를 "s"로 하고 인덱스 범위를 1부터 50까지로 설정한다고 가정해 보겠습니다. 이는 다음과 같은 디렉토리를 만들고 싶다는 것을 의미합니다.

s1, s2, ... , s49,s50

자동화를 사용하여 이를 수행할 수 있는 방법이 있습니까 mkdir? 시간 내 주셔서 감사합니다.

답변1

  • 하나

    for i in {1..50}; do
      mkdir s"$i"
    done
    
  • mkdir s{1..50}
    

    이 옵션은 다음에서 사용할 수 있습니다.세게 때리다,다루기 힘든그리고크쉬 93

  • mkdir $(printf "s%02i " $(seq 1 50))
    

답변2

이를 수행하려면 쉘 스크립트를 사용할 수 있습니다.

Pure sh - POSIX 이전 bourne 쉘에서도 작동합니다.

n=1;
max=50;
while [ "$n" -le "$max" ]; do
  mkdir "s$n"
  n=`expr "$n" + 1`;
done

많은 수의 디렉토리를 생성하는 경우 스크립트 를 단일 호출로 줄이고 테스트 및 산술용 쉘 내장 기능을 사용하여 mkdir스크립트 속도를 높일 수 있습니다. 이와 같이:

n=1
max=50
set -- # this sets $@ [the argv array] to an empty list.

while [ "$n" -le "$max" ]; do
    set -- "$@" "s$n" # this adds s$n to the end of $@
    n=$(( $n + 1 ));
done 

mkdir "$@"

Zsh, ksh93 또는 bash를 사용하면 이 작업이 더 쉬워지지만 이는 내장되어 있지 않으며 mkdir다른 셸에서는 작동하지 않을 수 있다는 점을 지적해야 합니다. 더 큰 경우에는 명령에 전달할 수 있는 인수 수 또는 전체 크기에 대한 제한으로 인해 영향을 받을 수도 있습니다.

mkdir s{1..50}

답변3

여기에는 복잡한 답변이 많이 있지만 bash를 사용하면 매우 간단해집니다. 물론 순수한 POSIX 솔루션도 가능하지만 bash사용 중인 셸을 활용해 보는 것은 어떨까요? 당신은 이것을 쉽게 할 수 있습니다버팀대 확장:

% mkdir -v s{1..10} && ls -1d s{1..10}                                   (09-24 17:37)
mkdir: created directory `s1'
mkdir: created directory `s2'
mkdir: created directory `s3'
mkdir: created directory `s4'
mkdir: created directory `s5'
mkdir: created directory `s6'
mkdir: created directory `s7'
mkdir: created directory `s8'
mkdir: created directory `s9'
mkdir: created directory `s10'
s1
s10
s2
s3
s4
s5
s6
s7
s8
s9

답변4

다르게 말하면 다음은 재귀를 사용하는 POSIX sh 솔루션입니다.

makedirs() {
  [ "$1" -gt 0 ] || return
  mkdir "s$1"
  makedirs $(( $1 - 1 ))
}
$ makedirs 9
$ ls
s1  s2  s3  s4  s5  s6  s7  s8  s9

관련 정보