5

Я только что открыл змв этим утром.

Чтобы проверить это, я создал несколько файлов.

test1.txt test2.txt test3.txt

Я пытаюсь переименовать их с помощью zmv. Я хочу получить такой вывод:

test-1.txt test-2.txt test-3.txt

когда я пытаюсь использовать символы подстановки, я получаю сообщение об ошибке:

zmv '(*)([0-9]{1,})(.txt)' '$1-$2$3'
zmv: error: number of wildcards in each pattern must match

Я делаю что-то не так (ответ должен быть да :))

3 ответа3

2

Это необычайно поздний ответ, так как я тоже столкнулся с этой проблемой и ломал голову над ней. Я наконец понял, что слой настройки zsh, который я использовал (yadr), был псевдонимом zmv. alias zmv="noglob zmv -W" . Я верю, что даже популярный слой oh-my-zsh делает это.

Проверьте, есть ли у вашего zmv псевдоним. Если это так, unalias использует unalias zmv и это ужасное number of wildcards must match ошибка должна исчезнуть сейчас.

2

Вы хотите добавить только - к имени файла? Попробуйте это так:

zmv -n 'test(*).txt' 'test-${1}.txt'

-n показывает, что произойдет, не выполняя никаких действий.

0

Если первый аргумент должен быть регулярным выражением, возможно, проблема в том, что вы использовали * вместо .* * Является 0 или . Соответствует любому одному символу).

Таким образом, первая пара, вероятно, была воспринята буквально как аргумент оператора * вместо открытия группы захвата.

Попробуйте http://www.regexr.com/ для интерактивного учебника регулярных выражений / тестер / строитель.

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