Zmiana nazwy wielu plików z użyciem jednego polecenia i wyrażeń regularnych oraz find

Paweł Zuzelski z w xatka.net
Pon, 5 Paź 2009, 13:56:06 CEST


On Mon, 05 Oct 2009, Daniel Dawid Majewski wrote:

> Pewnego dnia wpadła wieść od Paweł Zuzelski i powiedziała :
> > for I in $(find -name '*6x*.txt'); do mv "$I" "$(sed -e "cały ten długi syf")"; done
> Zależy mi na tym, aby ktoś zorientowany pomógł mi rozłożyć na czynniki pierwsze opcję -exec find-a z całym tym syfem,

największy syf to opcja -exec.

Ale jak koniecznie chcesz to robić w ten sposób, to dodaj sobie
'echo' przed 'mv', to zobaczysz co się dzieje. Na przykład tak:

find -name '*6x*.txt' -exec bash -c 'echo mv "{}" $(echo "{}" | sed -e "s;\(Seria\)\s\(plików\)\s\[6x\([[:digit:]]\{2\}\)\]\s\(.*\)\s(Z.*t);\1.\2.S06T\3.\4;")' ';'

hint:

find -name '*6x*.txt' -exec bash -c 'mv "'{}'" "'"$(echo "{}" | sed -e "s;\(Seria\)\s\(plików\)\s\[6x\([[:digit:]]\{2\}\)\]\s\(.*\)\s(Z.*t);\1.\2.S06T\3.\4;")"'"' ';'

-- 
Pozdrawiam,
Paweł


Więcej informacji o liście dyskusyjnej pld-users-pl