我怎样才能交换文件名中的模式?

我怎样才能交换文件名中的模式?

我有一个文件夹,里面的文件名称如下

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

这会产生同样的效果。

相关内容