在以下 bash 脚本中,如果 j=0000,我该如何更改以下 bash 脚本以创建名为 0001、0002 等的目录?实际上,它创建名为 1、2、3 的目录
for i in *.jpg; do let j+=1 ; mkdir $j ; done
谢谢!
答案1
您当前的脚本仅使用十进制值 - 这显然转换为没有前导零的值。
您必须将字符串填充为 4 个字符的长度,并在前面添加零。您可以使用反引号``
来获取 printf 调用的结果printf %04d $j
。
因此,您应该拥有完整的命令:
for i in *.jpg; do let j+=1; mkdir `printf %04d $j`; done
来源: StackOverflow:bash - 在字符串中填充零
(如果您想要更深入的解决方案,显然也请参阅该问题的进一步答案,但这绝对适合这种用例。)
答案2
使用 bash,最好的选择是:
mkdir {0001..0666}
创建名为0001
to 的目录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