Ho detto che le azioni fanno, appunto, un'azione. Beh, -prune invece non fa qualcosa, cioè non discende all'interno dell'albero delle directory (a meno che non si dia -depth). Di solito si trova insieme a -fstype, per scegliere tra i vari filesystem da controllare.
Le altre azioni possono essere divise in due grandi categorie:
-exec comando \;
il comando è eseguito, e l'azione
restituisce il valore vero se il suo stato finale è 0, cioè se l'esecuzione è
regolare. La ragione per il \;
è piuttosto logica: find non sa
dove finisce il comando, e il trucco di mettere l'azione exec alla fine del
comando non è applicabile. Beh, il modo migliore per segnalare la fine del
comando è di usare il carattere che la shell stessa usa, cioè
`;', ma naturalmente un punto e virgola da solo sarebbe mangiato dalla
shell e non arriverebbe a find, quindi deve essere usato con un comando di
escape. La seconda cosa
da ricordare è come specificare il nome del fie corrente all'interno di comando, dato che probabilmente vi siete adoperati perché l'espressione faccia
qualcosa, e non solo stampare date; si fa per mezzo della stringa
{}
. Alcune versioni vecchie di find richiedono che debba essere
messa tra spazi bianchi - non molto comodo se ad esempio vi serve il percorso
intero e non solo il nome del file - ma con il find della GNU può essere ovunque
nella stringa che compone comando. E, chiederete di sicuro, non deve essere
usato con un comando di escape o quotato? Meraviglioso: non l'ho mai dovuto fare
né sotto tcsh né sotto bash (sh non considera
{
e
}
come caratteri speciali, quindi non è un problema). La mia idea è che la
shell ``sa'' che {}
non è un'opzione che ha senso, quindi non prova ad
espanderla, fortunatamente per find, che la ottiene integra.
-ok comando \;
si comporta come -exec, con la differenza che
per ogni file scelto viene chiesto all'utente di confermare il comando; se la
risposta inizia per y o Y viene eseguito, altrimenti no, e l'azione
restituisce il valore falso.