Avendo un server linux e tutti client windows c'e' il problema di filtrare alcuni tipi di file durante le fasi di backup.
Io per il backup in linux faccio uso del comando rsync e dire: "copiami solo i *.doc!", lo recepisce come copiare solo e solamente i *.doc con l'estensione scritta intermanete in minuscolo mentre un file con estensione *.Doc non verra' considerato.
Per considerali nel nostro file di inclusione dovremmo scrivere:
*.doc
*.Doc
*.DOc
*.DOC
*.dOC
ecc.
Sarebbe un problema scrivere tutte le varie opzioni per ogni tipo di file.
A questo problema ci vengono in aiuto le espressioni regolari (regex).
Quindi per considerare tutti i *.doc, ignorando il case sensitive, nel file di inclusione possiamo scrivere:
*.[dD][oO][cC]
Ma anche così sarebbe un fastidio scrivere ogni tipo di file con quella sintassi.
Per ottenere cio' che vogliamo chiediamo aiuto a PERL!
Creiamo un file txt con tutti i tipi di file che vogliamo includere/escludere, es.: filtri.txt
*.doc
*.xls
*.pdf
*.txt
Una volta creato e salvato digitiamo:
perl -i.bak -pe 's/([a-z])/[\U$1\E$1]/g' filtri.txt
Dopo il comando il contenuto del file filtri.txt sara trasformato cosi':
*.[Dd][Oo][Cc]
*.[Xx][Ll][Ss]
*.[Pp][Dd][Ff]
*.[Tt][Xx][Tt]
Per renderlo nuovamente come l'abbiamo creato basta digitare:
perl -i.bak -pe 's/ \[ [A-Z] ([a-z]) \] /$1/xg' filtri.txt
Divertitevi ;-)
Nessun commento:
Posta un commento