需要使用 zmv 递归重命名多个文件

Need to rename mulitiple files recursively using zmv

所以我现在正在与脚本作斗争。我正在使用 zsh。我尝试了各种组合,但都不对。尝试递归更改文件名。所以基本上我有一个变量:file1。 我想做的是这样的:

zmv -W ${file1}/'**/*(test)*' ${file1}/'**/*red*'

这应该将子目录中的任何文件或文件夹递归地从测试更改为红色。因此: 如果 $file1= /var/log 那么它应该改变:

/var/log/jump/greentest.txt 到 /var/log/jump/greenred.txt

还有

/var/log/jump/1/1/test/test.xyz to /var/log/jump /1/1//.xyz

基本上如果我做了一个搜索: ls **/*test* 它将递归列出所有包含单词 'test' 的文件和文件夹。使用 zmv 解决方案,我想“找到”那些实例并将测试更改为红色。

我该怎么做?

我希望你先用 -n 尝试这些东西......

除此之外,在我看来唯一不对的部分是 test 周围的括号。您为不是通配符的东西引入了一个新的模式变量,但是您的 -W 已经隐含地引入了组和引用。因此我会用

试试
zmv -Wn $file1/'**/*test*' $file1/'**/*red*'

如果有效,请删除 -n