Como posso trocar padrões em nomes de arquivos?

2

Eu tenho uma pasta de arquivos com nomes como

thing.y.big.png
thing.y.small.png
thing.xxx.big.png
thing.xxx.small.png

e gostaria de renomeá-los para que o 2º e o 3º "campos" sejam trocados. No exemplo, minha saída desejada seria:

thing.big.y.png
thing.small.y.png
thing.big.xxx.png
thing.small.xxx.png

Como posso fazer isso em zsh? Portabilidade não é necessária, mas é sempre legal.

    
por shadowtalker 04.03.2015 / 20:46

1 resposta

4

Use zmv :

% autoload -U zmv
% zmv 'thing.(*).(*).png' 'thing.$2.$1.png'

Isso fará o seguinte:

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

O utilitário Perl rename está disponível em várias distribuições Linux:

% rename 's/thing\.(.*)\.(.*)\.png/thing.$2.$1.png/' *.png

Isso faria a mesma coisa.

    
por 04.03.2015 / 20:55