Alkuperäisestä viestistä oli tipahtanut edestä pois IFS=$'\n' . Jotta nimissä sallittaisiin välilyönnit. Perään olisi hyvä liittää: unset IFS
Siis käsky olisi pitänyt olla:
IFS=$'\n'; rsync -rlptvzs $(find ~/OMATSKRIPTIT -name "*" -type f -mtime -500) ~/Elisa; unset IFS
- ja nopeus on tosiaan vertaansa vailla - varsinkin jos kopiointi tehdään varmuuden vuoksi: kun halutaan olla varmoja siitä että kaikki on viimeistä versiota.
- nopeus on niin suuri koska vaikka koodi on BASH:ia niin koodin suoritus tapahtuu enimmäkseen C:ssä. BASH:issa toimiminen on hidastuu hirvittävästi suoritettavan rivimäärän kasvaessa - ja loopatessa erittäinkin. Luulisinpa että Perl ja Pythonkin ovat helisemässä näiden yksirivisten kanssa - eivätkä olekaan enää ylivertaisia.
- ja soveltamalla find:in miljoonaa optiota ja kytkintä voidaan räätälöidä toiminta melkein miksi halutaan. Tai rsynkata SSH:n yli.
- mutta tehtävän suorittaminen kuvatulla tavalla saattaa johtaa väärään tulokseen riippumatta siitä käytetäänkö kopiointiin rsync:ia, mv:tä, cp:tä tai jotakin muuta: mikäli tiedostopoluilla on samannimisiä tiedostoja kopioituu niistä vain yksi. Onhan se helppolukuista, ja mikäli kaikki halutaan saada lopputulokseen on rsync:in kytkimien pikku r muutettava isoksi R:ksi mutta se johtaa vaikeasti luettavaan lopputulokseen.
Kopioinnin rajoittimia:
Kopioinnin estäminen mikäli polulla on jokin merkkiryhmä:
IFS=$'\n'; rsync -rlptvzs $(find ~/OMATSKRIPTIT ! -path "*ARKISTO*" -type f -mtime -500) ~/Elisa; unset IFS
Kopioinnin estäminen mikäli kopioitavan nimi päättyy numeroon:
IFS=$'\n'; rsync -rlptvzs $(find ~/OMATSKRIPTIT ! -iregex ".*[0-9]$" -type f -mtime -500) ~/Elisa; unset IFS