需要使用 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
。
所以我现在正在与脚本作斗争。我正在使用 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
。