在以下 bash 脚本中,如果 j=0000,我该如何更改以下 bash 脚本以创建名为 0001、0002、...的目录?实际上它使目录命名为 1, 2, 3
for i in *.jpg; do let j+=1 ; mkdir $j ; done
Run Code Online (Sandbox Code Playgroud)
谢谢!
use*_*085 13
您当前的脚本仅使用十进制值 - 这显然会转换为没有前导零的值。
您必须将字符串填充为 4 个字符的长度,并带有前导零。为此,您可以使用反引号``获取 printf 调用的结果printf %04d $j。
因此,您应该拥有完整的命令:
for i in *.jpg; do let j+=1; mkdir `printf %04d $j`; done
Run Code Online (Sandbox Code Playgroud)
来源: StackOverflow:bash - 在字符串中填充零
(显然,如果您想要更深入的解决方案,请参阅该问题的进一步答案,但这绝对适用于此用例。)
使用 bash,您最好的选择是:
mkdir {0001..0666}
Run Code Online (Sandbox Code Playgroud)
创建名称0001为 to 0666(零填充)的目录。
如果您想要名为prefix0001suffix, prefix0002suffix, ... 的目录,则:
mkdir prefix{0001..0666}suffix
Run Code Online (Sandbox Code Playgroud)
会做。
如果您只想要奇数目录名称
mkdir {0001..0666..2}
Run Code Online (Sandbox Code Playgroud)
正如 FEichinger 指出的那样,您需要提前知道目录的数量。如果你想要一个接近你的解决方案,但真正安全并使用更现代的 bash 成语:
for i in *.jpg; do ((++j)); mkdir $(printf "%04d" $j) ; done
Run Code Online (Sandbox Code Playgroud)