zmv:替换文件名中的双引号(“)

atl*_*ren 6 zsh rename replace

在 macOS 上使用 zmv,我想用下划线 (_) 替换文件名中的双引号 (")。但是,我无法让 zshexpn 正确隔离 ". 我应该使用一些神奇的 zsh/zmv/zshexpn 选项吗?

% zmv -n '(**/)(*)' '$1${(S)2//"/_}'
zmv: syntax error in replacement
% zmv -n '(**/)(*)' '$1${(S)2//\"/_}'
zmv: syntax error in replacement`
% zmv -n '(**/)(*)' '$1${(Sp)2//\"/_}'
zmv: syntax error in replacement
Run Code Online (Sandbox Code Playgroud)

(这是更大的替换非法字符活动的一部分。我希望使用一个 zmv 表达式来完成整个事情。)

感谢您的任何帮助。

小智 2

在我的测试中zmv '* *' '$f:gs/"/_'效果很好。

https://zsh.sourceforge.io/Intro/intro_2.html是对文件通配符的非常枯燥的解释。与正则表达式不同,但足够接近以至于令人困惑。