Cerca nel sito:
ricerca
avanzata

Frasi Celebri...

La speranza ? un rischio che bisogna correre.

Georges Bernanos 

Sondaggio:

La Ferrari ?...

Una leggenda
La storia
Schumacher
L'auto per eccellenza
Un sogno

visualizza risultati


 

Espressioni di find: azioni

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:

  • Azioni che stampano qualcosa. La più banale (e certo, l'azione di default di find) è -print che stampa semplicemente il nome del/dei file che corrispondono alle altre condizioni nella linea di comando, e rende il valore vero. Una semplice variante di -print è -fprint file, che usa file invece dell'output standard, -ls elenca il file corrente nello stesso formato di ls -dils, -printf formato si comporta più o meno come la funzione del C printf(), in modo che potete specificare come formattare l'output, e -fprintf file formato fa la stessa cosa, ma scrivendo su file. Anche queste azioni rendono il valore vero.

  • Azioni che eseguono qualcosa. La loro sintassi è un po' strana e sono largamente usate, quindi per favore dategli un'occhiata.

    -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 file 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.

 

successivo
–«  INDICE  »–

 

 

 

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