У меня есть следующие файлы в единственном каталоге:
1-1 - different text for each file here.txt
1-2 - different text for each file here.txt
.
.
1-9 - different text for each file here.txt
1-10 - different text for each file here.txt
1-11 - different text for each file here.txt
1-12 - different text for each file here.txt
.
.
Я хочу переименовать файлы внезапно (использование zmv
выполнение в zsh
) к:
1-01 - different text for each file here.txt
1-02 - different text for each file here.txt
.
.
1-09 - different text for each file here.txt
1-10 - different text for each file here.txt
1-11 - different text for each file here.txt
1-12 - different text for each file here.txt
Вот то, что я попробовал: zmv '1-([0-9])(*)' '1-0$1$2'
Это приводит к следующим именам файлов:
1-01 - different text for each file here.txt
1-02 - different text for each file here.txt
.
.
1-09 - different text for each file here.txt
1-010 - different text for each file here.txt
1-011 - different text for each file here.txt
1-012 - different text for each file here.txt
.
.
Таким образом, я думал, что изменю шаблон находки на zmv '1-([0-9]{1})(*)' '1-0$1$2'
для соответствия только файлам единственной цифре после дефиса но это не работает (я просто добираюсь zmv:232: no matches found: 1-([0-9]{1})(*)
).
Что я делаю неправильно? Это ровное возможное использование zmv
или если я использую что-то как sed
в a for
цикл или что-то как этот?
Это должно работать на Вас:
zmv '1-([0-9])( *)' '1-0$1$2'
или
zmv '1-([0-9])([^0-9]*)' '1-0$1$2'
Просто необходимо заставить соответствие включать только одну цифру, сопровождаемую пространством или нецифрой. С путем у Вас был он, это соответствовало одной цифре, сопровождаемой чем-либо.