Bash 3.2.57 중괄호 확장 {01..09}

Bash 3.2.57 중괄호 확장 {01..09}

약간의 문제가 있습니다. bash v.4를 사용할 수 없습니다. bash 3.2.57을 계속 사용하겠습니다. 이 형식으로 스크립트를 입력하고 있지만 logs_logs_2017-04-{02..06}.tar.bz2bash 3.2.57은 앞에 0이 있는 중괄호 확장을 지원하지 않기 때문에 스크립트에 다음이 제공되며 logs_logs_2017-04-2.tar.bz2 logs_logs_2017-04-3.tar.bz2 .....이러한 파일 이름은 존재하지 않습니다.

어떤 아이디어?

감사해요 !

답변1

선행 0을 중심으로 이동합니다.

somecmd logs-0{2..9}.tar.bz2  logs-{10..15}.tar.bz2

( 02..06예제의 는 이런 방식으로 처리하기가 쉽지 않습니다.)

또는 다음을 사용하십시오 printf.

somecmd $(printf "logs-%02d.tar.gz " {2..15})

이는 단어 분할에 의존하며 파일 이름에 glob 문자나 공백이 없는 경우에만 작동합니다.

제대로 수행되면 간단하지만 약간 길어집니다.

files=()
for x in {2..15} ; do
    files+=( "$(printf "logs-%02d.tar.gz" $x)" )
done
somecmd "${files[@]}"

관련 정보