回答:
現在のスクリプトは10進値のみを使用しています。これは明らかに先行ゼロなしの値に変換されます。
文字列は、先頭にゼロを付けて4文字の長さに埋め込む必要があります。これを行うには、バックティック``
を使用して、printf呼び出しの結果を取得しますprintf %04d $j
。
その結果、完全なコマンドが必要です。
for i in *.jpg; do let j+=1; mkdir `printf %04d $j`; done
ソース: StackOverflow:bash-文字列のゼロをパディング
(より詳細なソリューションが必要な場合は、明らかにその質問へのさらなる回答も参照してください。ただし、これは間違いなくこのユースケースで完全に機能します。)
bashを使用する場合の最良のオプションは次のとおりです。
mkdir {0001..0666}
名前のDIRSを作成する0001
には0666
(ゼロパディング付き)。
あなたが指定されたディレクトリをしたい場合はprefix0001suffix
、prefix0002suffix
、...その後:
mkdir prefix{0001..0666}suffix
しましょう。
奇数のディレクトリ名だけが必要な場合
mkdir {0001..0666..2}
など... リファレンスマニュアルのBrace Expansionをbash
参照してください。
FEichingerが指摘するように、ディレクトリの数を事前に知っておく必要があります。あなたに近いが本当に安全でよりモダンなbashイディオムを使用するソリューションが必要な場合:
for i in *.jpg; do ((++j)); mkdir $(printf "%04d" $j) ; done