2

У меня есть папка с файлами, такими как

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 ответ1

4

Используйте 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

Утилита rename Perl доступна во многих дистрибутивах Linux:

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

Это сделало бы то же самое.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .