如何使用zmv
, 将任意数量的空格替换为单个下划线?
我目前使用的是
zmv -- '* *' '$f:gs/ /_'
但它取代了每个空格,因此foo bar.txt
变成foo___bar.txt
, not foo_bar.txt
(我希望它是)。
如何使用zmv
, 将任意数量的空格替换为单个下划线?
我目前使用的是
zmv -- '* *' '$f:gs/ /_'
但它取代了每个空格,因此foo bar.txt
变成foo___bar.txt
, not foo_bar.txt
(我希望它是)。
这里您想要的是
+
与 zsh 中的 regexp 运算符等效的 regexp 运算符extendedglob
(并且zmv
确实启用extendedglob
)是##
glob 运算符。除非您设置该选项,否则 csh 中的修饰符
:s/.../.../
不会进行模式匹配histsubstpattern
。zmv
不设置该选项并将选项重置为正常的默认值,因此您不能在那里使用它。下一个版本zsh
(无论是 5.10 还是 6.0)将具有:S
(实际上是根据我的要求并出于此目的)无条件进行模式匹配,因此有了这些,您将能够执行以下操作:但对于任何版本的 zsh,您也可以使用 ksh 样式
${param//pattern/replacement}
:请注意,
--
这里没有必要,因为第一个参数不以 开头-
。