약간의 문제가 있습니다. bash v.4를 사용할 수 없습니다. bash 3.2.57을 계속 사용하겠습니다. 이 형식으로 스크립트를 입력하고 있지만 logs_logs_2017-04-{02..06}.tar.bz2
bash 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[@]}"