을 사용하여 많은 디렉토리를 만들고 싶습니다 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