Answers:
您当前的脚本仅使用一个十进制值-显然会转换为该值而没有前导零。
您必须将字符串填充为4个字符的长度,并带有前导零。您可以通过使用反引号``
来获取printf调用的结果printf %04d $j
。
因此,您应该具有完整的命令:
for i in *.jpg; do let j+=1; mkdir `printf %04d $j`; done
来源: StackOverflow :bash-在字符串中填充零
(如果您想要更深入的解决方案,显然也可以看到该问题的进一步答案,但这绝对适用于此用例。)
使用bash,最佳选择是:
mkdir {0001..0666}
创建名称0001
为0666
(带有零填充)的目录。
如果你想要的目录命名prefix0001suffix
,prefix0002suffix
......那么:
mkdir prefix{0001..0666}suffix
会做。
如果只需要奇数目录名
mkdir {0001..0666..2}
依此类推...请参见参考手册中的Brace Expansionbash
。
正如FEichinger指出的那样,您需要事先知道目录的数量。如果您想要一个接近您的解决方案,但真正安全且使用更现代的bash惯用语的解决方案:
for i in *.jpg; do ((++j)); mkdir $(printf "%04d" $j) ; done