Jak używać kwantyfikatorów regex do zmiany nazwy wielu plików za pomocą zmv?

4

W jednym katalogu mam następujące pliki:

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
.
.


Chcę zmienić nazwy plików jednocześnie (używając zmv wbiegam zsh ) do:

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


Oto co próbowałem: zmv '1-([0-9])(*)' '1-0$1$2'


Powoduje to następujące nazwy plików:

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
.
.

Pomyślałem, że zmienię wzór wyszukiwania na zmv '1-([0-9]{1})(*)' '1-0$1$2' aby dopasować tylko pliki z jedną cyfrą po myślniku, ale to nie działa (Po prostu dostaję zmv:232: no matches found: 1-([0-9]{1})(*) ).

Co ja robię źle? Czy jest to możliwe nawet przy użyciu zmv czy powinienem użyć czegoś takiego sed w for pętla czy coś takiego?

Marco Peluso
źródło

Odpowiedzi:

4

To powinno działać dla Ciebie:

zmv '1-([0-9])( *)' '1-0$1$2'

lub

zmv '1-([0-9])([^0-9]*)' '1-0$1$2'

Musisz tylko dopasować tylko jedną cyfrę, a po niej spację lub cyfrę. W taki sposób, w jaki to zrobiłeś, pasował do jednej cyfry, po której następowała byle co .

Dennis Williamson
źródło
Argh, to było takie proste, ale tego nie widziałem! Dzięki za otwarcie oczu. :)
Marco Peluso