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?

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 .


Argh, to było takie proste, ale tego nie widziałem! Dzięki za otwarcie oczu. :)
Marco Peluso
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.