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?
command-line
shell
regex
zsh
Marco Peluso
źródło
źródło