Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

P?, ? arrivato l'uomo della spazzatura. - Digli che non ne vogliamo.

Groucho Marx 

Sondaggio:

Cosa pensi della pena di morte?

Dovrebbero abolirla in tutto il mondo
A volte ? necessaria
Ammazzateli tutti quei b... delinquenti
Va contro ogni principio umano
Non mi interessa

visualizza risultati


 

Un'ultima parola su find

Tenete a mente che find è un comando che prende moltissimo tempo, dato che deve accedere a tutti gli inode del sistema per operare. È quindi saggio combinare tutte le operazioni che vi servono in un'unica invocazione di find, specialmente nei lavori di "pulizia" fatti da crontab.

Un esempio illuminante è questo: supponiamo di voler cancellare i file che finiscono con .BAK e cambiare le protezioni di tutte le directory a 771 e quelle dei file che finiscono con .sh a 755. E magari stiamo montando dei filesystem via NFS su un collegamento via modem, e non vogliamo controllare quei file. Perché scrivere tre comandi separati? Il modo più efficace di portare a termine il compito è questo:

% find . \( -fstype nfs -prune \) -o \
         \( -type d -a -exec chmod 771 {} \; \) -o \
         \( -name "*.BAK" -a -exec /bin/rm {} \; \) -o \
         \( -name "*.sh" -a -exec chmod 755 {} \; \)

Sembra brutto (e che spreco di barre rovesciate!), ma guardando attentamente rivela che la logica che c'è sotto è molto lineare. Ricordate che quello che fa in realtà è una valutazione vero/falso; il comando compreso è solo un effetto secondario. Ma ciò significa che viene fatto solo se find deve valutare la parte exec dell'espressione, cioè solo se il lato sinistro della sottoespressione rende vero. Quindi, se per esempio il file considerato al momento è una directory viene valutato il primo exec ed i permessi dell'inode vengono cambiati a 771; altrimenti se ne dimentica e passa alla seconda sottoespressione. Probabilmente è più semplice vederlo in pratica che scriverlo, ma dopo un po' diventerà una cosa naturale.

 

successivo
–«  INDICE  »–

 

 

 

 
Powered by paper&pencil (carta&matita ) - Copyright © 2001-2022 Cataldo Sasso