Answers:
如果总是有两个,则很简单:
for f in file+([0-9]).png; do zip "${f%png}zip" "$f" "${f/./@2x.}"; done
请注意,上面的命令将按命令行运行。如果要在脚本中使用它,请shopt -s extglob
在该行之前放置某个位置。(extglob
默认情况下仅在交互式shell中启用。)
在旧的bash
不处理扩展模式的情况下,此丑陋的解决方法将起作用,但最好按照 Leonid的另一个答案中的建议更改逻辑:
for f in file[0-9].png file*[0-9][0-9].png; do zip "${f%png}zip" "$f" "${f/./@2x.}"; done
bash
您使用哪个版本?我的是4.2.37。
extglob
默认情况下不会在交互shell中启用的,但也许你的操作系统附带了bashrc
那个打开它(并已加入extglob在2.02-α1来砸)
--enable-extended
默认情况下(opt_extended_glob=yes
in configre
)已启用,但未启用--enable-extended-glob-default
(opt_extglob_default=no
),这在文档中是不准确的。它必须已由您的OS维护者明确启用。但是要注意的是,不同的bash分布具有不同的默认值。