我有一个文件夹,里面的文件名称如下
thing.y.big.png
thing.y.small.png
thing.xxx.big.png
thing.xxx.small.png
我想重命名它们,以便交换第 2 和第 3 个“字段”。在示例中,我希望的输出为:
thing.big.y.png
thing.small.y.png
thing.big.xxx.png
thing.small.xxx.png
我如何在 zsh 中做到这一点?可移植性不是必需的,但它总是好的。
答案1
使用zmv
:
% autoload -U zmv
% zmv 'thing.(*).(*).png' 'thing.$2.$1.png'
这将执行以下操作:
mv -- thing.xxx.big.png thing.big.xxx.png
mv -- thing.xxx.small.png thing.small.xxx.png
mv -- thing.y.big.png thing.big.y.png
mv -- thing.y.small.png thing.small.y.png
Perlrename
实用程序可在许多 Linux 发行版上使用:
% rename 's/thing\.(.*)\.(.*)\.png/thing.$2.$1.png/' *.png
这会产生同样的效果。