我想重命名a_1.0.tgz为b_1.0.tgz,因为1.0可能会更改为任何版本号,我该如何实现?
例如,mv a*.tgz b.tgz如果我不需要保留版本号,我可以使用。
zsh附带实用程序zmv,正是为此而设计的。虽然zmv不支持正则表达式,但它确实为文件名生成模式(又名globbing)提供了捕获组。
首先,您可能需要启用zmv. 这可以通过将以下内容添加到您的~/.zshrc:
autoload -Uz zmv
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用它:
zmv 'a_(*)' 'b_$1'
Run Code Online (Sandbox Code Playgroud)
这将重命名任何匹配的文件a_*,即a_由b_. 如果你想不那么一般,你当然可以调整模式:
仅重命名.tgz文件:
zmv 'a_(*.tgz)' 'b_$1'
Run Code Online (Sandbox Code Playgroud)在将.tgz扩展名更改为时仅重命名文件.tar.gz
zmv 'a_(*).tgz' 'b_$1.tar.gz'
Run Code Online (Sandbox Code Playgroud)只重命名a_1.0.tgz:
zmv 'a_(1.0.tgz)' 'b_$1'
Run Code Online (Sandbox Code Playgroud)要在保存方面,您可以先zmv使用该选项运行-n。这只会打印会发生什么,但实际上不会改变任何东西。有关更多信息,请查看man zshcontrib.