답변:
현재 스크립트는 십진수 값만 사용합니다. 이것은 분명히 0을 선행하지 않는 값으로 변환합니다.
문자열을 4 자 길이로 채워야하며 앞에 0이 있어야합니다. backticks ``를 사용 하여 printf 호출의 결과를 얻습니다 printf %04d $j.
결과적으로 전체 명령이 있어야합니다.
for i in *.jpg; do let j+=1; mkdir `printf %04d $j`; done
출처 : StackOverflow : bash-문자열에서 패딩 0
(더 자세한 솔루션을 원할 경우 해당 질문에 대한 추가 답변을 볼 수도 있지만이 사용 사례에 완벽하게 작동합니다.)
bash를 사용하는 가장 좋은 방법은 다음과 같습니다.
mkdir {0001..0666}
이름 DIRS을 만듭니다 0001에 0666(제로 패딩).
당신이 디렉토리를 원하는 경우 이름 prefix0001suffix, prefix0002suffix... 다음 :
mkdir prefix{0001..0666}suffix
할 것이다.
홀수 디렉토리 이름 만 원하는 경우
mkdir {0001..0666..2}
등 ... 참조 설명서의 브레이스 확장 을bash 참조하십시오 .
FEichinger가 지적했듯이 디렉토리 수를 미리 알아야합니다. 자신에게 가까운 솔루션을 원하지만 실제로 안전하고 더 현대적인 bash 관용구를 사용하는 경우 :
for i in *.jpg; do ((++j)); mkdir $(printf "%04d" $j) ; done