FIND(1L)

NOME
find - cerca i file in una gerarchia di directory

SINTASSI
find [percorso...] [espressione]

DESCRIZIONE
Questa pagina di manuale documenta la versione GNU di find. find effettua una ricerca negli alberi di directory aventi radice in ognuno dei nomi di file specificati, valutando da sinistra a destra, in accordo con le regole di precedenza (si veda la sezione OPERATORI), l'espressione data finché non ne conosca il valore (è falso il lato sinistro delle operazioni and, o è vero quello delle or), spostando a questo punto la propria attenzione sul successivo nome di file.

Il primo argomento che inizia con `-', `(', `)', `,', o `!' è considerato l'inizio dell'espressione; qualsiasi argomento precedente è assunto essere un percorso nel quale fare la ricerca, e qualsiasi argomento successivo è il seguito dell'espressione. Se non è specificato alcun percorso è usata la directory corrente. Se non è data nessuna espressione è usata l'espressione `-print'.

find esce con stato 0 se tutti i file sono stati processati con successo, con uno stato maggiore di 0 se accadono degli errori.

ESPRESSIONI

L'espressione è fatta di opzioni (le quali hanno effetto su tutte le operazioni piuttosto che nell'elaborazione di un file specifico, e ritornano sempre vero), test (che possono ritornare sia vero che falso), e azioni (che hanno effetti collaterali e ritornano vero o falso), tutte separate da operatori. Se l'operatore è omesso è assunto l'operatore -and. Se l'espressione non contiene altre azioni oltre a -prune, è effettuata l'azione -print su tutti i file per i quali l'espressione è vera.

  OPZIONI

Tutte le opzioni ritornano sempre vero. Hanno sempre effetto, piuttosto che essere processate solo quando è raggiunto il loro posto nell'espressione. Quindi, per chiarezza, è meglio metterle all'inizio dell'espressione.

-daystart
    Misura il tempo (per -amin, -atime, -cmin, -ctime, -mmin, e -mtime) a partire dell'inizio della giornata attuale piuttosto che da 24 ore fa.

-depth
    Processa il contenuto di ogni directory prima della directory stessa.

-follow
    Deferenzia i link simbolici. Implica -noleaf.

-help, --help
    Mostra un sunto dell'uso in riga di comando di find ed esce.

-maxdepth livelli
    Discende al più livelli (un intero non negativo) livelli di directory sotto degli argomenti della riga di comando. `-maxdepth 0' fa sì che le azioni e i test vengano applicati solo agli argomenti della riga di comando.

-mindepth liveli
    Non applica nessun test o azione a livelli minori di livelli (un intero non negativo). `-mindepth 1' fa sì che vengano processati tutti i file ad eccezione degli argomenti della riga di comando.

-mount
    Non discende le directory su altri filesystem. È un nome alternativo per -xdev, mantenuto per compatibilità con alcune altre versioni di find.

-noleaf
    Non ottimizza la ricerca assumendo che le directory contengano 2 sotto-directory in meno del loro numero di link hard ("hard link count"). Questa opzione è necessaria quando si effettuano ricerche su filesystem che non seguono le convenzioni Unix sui link a directory, come i filesystem dei CD-ROM o MS-DOS oppure i volumi AFS. In un normale filesystem Unix ogni directory ha almeno 2 link hard: il suo nome e il suo campo `.'. Inoltre, ognuna delle sue sotto-directory (se ce ne sono) ha un campo `..' lincato a quella directory. Quando find sta esaminando una directory, dopo aver assunto che ci siano 2 sotto-directory in meno del numero di link hard, sa che il resto dei campi nella directory non sono directory (file `foglie' nell'albero della directory). Se devono essere esaminati solo i nomi dei file, non c'è bisogno di fare questa assunzione; ciò incrementa notevolmente la velocità di ricerca.

-version, --version
    Mostra il numero di versione di find ed esce.

-xdev
    Non discende le directory su altri filesystem.

  TEST

Gli argomenti numerici possono essere specificati come

+n  per i valori maggiori di n,

-n  per quelli minori di n,

n   se si vuole intendere esattamente n.

-amin n
    Il file ha subito l'ultimo accesso n minuti fa.

-anewer file
    Il file ha subito l'ultimo accesso prima dell'ultima modifica di file. -anewer subisce l'effetto di -follow solo se -follow compare prima di -anewer nella riga di comando.

-atime n
    Il file ha subito l'ultimo accesso n*24 ore fa.

-cmin n
    Lo stato del file ha subito l'ultima modifica n minuti fa.

-cnewer file
    Lo stato del file è stato modificato prima dell'ultima modifica di file. -cnewer subisce l'effetto di -follow solo se -follow compare prima di -cnewer nella riga di comando.

-ctime n
    Lo stato del file ha subito l'ultima modifica n*24 ore fa.

-empty
    Il file è vuoto ed è o un file regolare o una directory.

-false
    Sempre falso.

-fstype tipo
    Il file è su un filesystem di tipo tipo. I tipi di filesystem validi variano tra le diverse varianti di Unix; un elenco incompleto di tipi di filesystem accettati in alcune versioni di Unix è: ufs, 4.2, 4.3, nfs, tmp, mfs, S51K, S52K. Si può usare -printf con la direttiva %F per vedere i tipi dei propri filesystem.

-gid n
    L'identificatore (ID) numerico di gruppo del file è n.

-group gruppo
    Il file appartiene al gruppo gruppo (sono permessi anche ID numerici di gruppi).

-ilname modello
    Simile a -lname, ma per la corrispondenza non si considerano diverse le lettere minuscole da quelle maiuscole ("case insensitive").

-iname modello
    Simile a -name, ma per la corrispondenza non si considerano diverse le lettere minuscole da quelle maiuscole ("case insensitive"). Per esempio, il modello `fo*' e `F??' corrispondono ai nomi di file `Foo', `FOO', `foo', `fOo', ecc.

-inum n
    Il file ha numero di inode n.

-ipath modello
    Simile a -path, ma per la corrispondenza non si considerano diverse le lettere minuscole da quelle maiuscole ("case insensitive").

-iregex modello
    Simile a -regex, ma per la corrispondenza non si considerano diverse le lettere minuscole da quelle maiuscole ("case insensitive").

-links n
    Il file ha n link.

-lname modello
    Il file è un link simbolico il cui contenuto corrisponde al modello shell modello. I metacaratteri non trattano in modo speciale i caratteri `/' or `.'.

-mmin n
    I dati del file sono stati modificati n minuti fa.

-mtime n
    I dati del file sono stati modificati n*24 ore fa.

-name modello
    Il nome di base del file (il percorso a cui sono state rimosse le directory iniziali) corrisponde al modello shell modello. I metacaratteri (`*', `?', e `[]') non fanno la corrispondenza con il `.' all'inizio del nome di base. Per ignorare una directory e tutti i file che contiene, si usi -prune; si veda l'esempio nella descrizione di -path.

-newer file
    Il file è stato modificato più di recente rispetto a file. -newer subisce l'effetto di -follow solo se -follow compare prima di -newer nella riga di comando.

-nouser
    Nessun utente corrisponde all'ID numerico dell'utente proprietario del file.

-nogroup
    Nessun gruppo corrisponde all'ID numerico del gruppo proprietario del file.

-path modello
    Il file corrisponde al modello shell modello. I metacaratteri non trattano in modo speciale i caratteri `/' o `.'; così, per esempio,
    find . -path './sr*sc'
    mostrerà un campo per una directory chiamata './src/misc' (se ne esiste una). Per ignorare un intero albero di directory, si usi -prune piuttosto che fare una verifica su ogni file nell'albero. Per esempio, per saltare la directory `src/emacs' e tutti i file in essa contenuti, e stampare i nomi degli altri file trovati, si può usare qualcosa di simile a:
    find . -path './src/emacs' -prune -o -print

-perm mode
    I bit di permesso del file sono esattamente uguali a mode (in ottale o simbolico). I mode simbolici usano mode 0 come punto di partenza.

-perm -mode
    Tutti i bit di permesso in mode sono impostati per il file.

-perm +mode
    Uno qualsiasi dei bit di permesso in mode è impostato per il file.

-regex modello
    Il nome del file corrisponde all'espressione regolare modello. È una corrispondenza sull'intero percorso, non una ricerca. Per esempio, per fare una corrispondenza con un file chiamato `./fubar3', si può usare l'espressione regolare `.*bar.' o `.*b.*3', ma non `b.*r3'.

-size n[bckw]
    Il file usa n unità di spazio. Di default o se n è seguito da `b', le unità sono blocchi di 512 byte, oppure sono byte se n seguito da `c', kilobyte se è seguito da `k', parole di 2 byte se è seguito da `w'. La dimensione non conta i blocchi indiretti, ma conta i blocchi in file sparsi che non sono realmente allocati.

-true
    Sempre vero.

-type c
    Il file è di tipo c:

    b   speciale a blocchi (bufferizzato)

    c   speciale a caratteri (non bufferizzato)

    d   directory

    p   named pipe (FIFO)

    f   file regolare

    l   link simbolico

    s   socket

-uid n
    L'identificativo numerico dell'utente proprietario del file è n.

-used n
    Il file ha subito l'ultimo accesso n giorni dopo la sua ultima modifica.

-user nome_utente
    Il file è di proprietà dell'utente nome_utente (sono permessi anche identificativi numerici di utente).

-xtype c
    Analogo a -type finché il file non è un link simbolico. Per i link simbolici: se non è stato specificato -follow, è vero se il file è un link a un file di tipo c; se è specificato -follow, vero se c è `l'. In altre parole, per i link simbolici, -xtype verifica i tipi di file non verificati da -type.

  AZIONI

-exec comando ;
    Esegue comando; vero se è ritornato lo stato 0. Tutti i successivi argomenti di find sono considerati argomenti del comando fino a che non è incontrato un argomento composto da `;'. Ovunque compaia negli argomenti del comando, non solo negli argomenti dov'è da sola come in alcune versioni di find, la stringa `{}' è rimpiazzata dal nome di file che si sta attualmente processando. Entrambi questi costrutti possono aver bisogno di essere prefissi da un `\' (escaped) o racchiusi tra virgolette per proteggerli dall'espansione della shell. Il comando è eseguito nella directory di avvio.

-fls file
    Vero; simile a -ls ma scrive su file come -fprint.

-fprint file
    Vero; scrive l'intero nome del file nel file file. Se file non esiste quando è lanciato find, è creato; ma se esiste è troncato. I nomi di file ``/dev/stdout'' e ``/dev/stderr'' sono trattati in modo speciale; fanno riferimento rispettivamente allo standard output e allo standard error output.

-fprint0 file
    Vero; simile a -print0 ma scrive su file come -fprint.

-fprintf file formato
    Vero; simile a -printf ma scrive su file come -fprint.

-ok comando ;
    Simile a -exec ma chiede prima conferma all'utente (nello standard input); se la risposta non inizia con `y' o `Y', non lancia il comando e ritorna falso.

-print
    Vero; stampa sullo standard output l'intero nome del file seguito da un newline.

-print0
    Vero; stampa sullo standard output l'intero nome del file seguito da un carattere null. Ciò permette la corretta interpretazione da parte di programmi che elaborano l'output di find, dei nomi di file che contengono caratteri di newline.

-printf formato
    Vero; stampa formato sullo standard output interpretando le sequenze di escape `\' e le direttive `%'. Le larghezze dei campi e le precisioni possono essere specificate come nella funzione C `printf'. Diversamente da -print, -printf non aggiunge un newline alla fine della stringa. Le sequenze di escape e le direttive sono:

    \a  Alarm bell.

    \b  Backspace.

    \c  Blocca la stampa a partire da questo carattere e scarica il buffer per l'output.

    \f  Form feed.

    \n  Newline.

    \r  Carriage return.

    \t  Tab orizzontale.

    \v  Tab verticale.

    \\  Un backslash (`\').

    Un carattere `\' seguito da un qualsiasi altro carattere è trattato come un carattere ordinario, e così sono stampati entrambi.

    %%  Un segno di percento.

    %a  Il tempo dell'ultimo accesso al file ritornato nel formato della funzione C `ctime'.

    %Ak Il tempo dell'ultimo accesso al file nel formato specificato da k, che è o `@' o una direttiva per la funzione C `strftime'. I possibili valori per k sono elencati sotto; alcuni possono non essere disponibili in tutti i sistemi, a causa delle differenze nella `strftime' tra i vari sistemi.

        @   secondi a partire dalle ore 00:00 GMT del 1 Gennaio 1970.

        Campi dell'ora:

        H   ora (00..23)

        I   ora (01..12)

        k   ora ( 0..23)

        l   ora ( 1..12)

        M   minuti (00..59)

        p   AM o PM locale

        r   ora, 12 ore (ore:minuti:secondi [AP]M)

        S   secondi (00..61)

        T   ora, 24 ore (ore:minuti:secondi)

        X   rappresentazione locale dell'ora (H:M:S)

        Z   zona temporale ("fuso orario") (p.es. MET), o niente se non è determinabile.

        Campi della data:

        a   abbreviazioni locali dei nomi dei giorni della settimana (lun..dom)

        A   nomi completi locali dei giorni della settimana, a lunghezza variabile (lunedì..domenica)

        b   abbreviazioni locali dei nomi dei mesi (gen..dic)

        B   nomi completi locali dei mesi, a lunghezza variabile (gennaio..dicembre)

        c   data e ora locale (sab 12 apr 1997 08:06:53)

        d   giorno del mese (01..31)

        D   data (mese/giorno/anno)

        h   analogo a b

        j   giorno dell'anno (001..366)

        m   mese (01..12)

        U   numero di settimana dell'anno con domenica come primo giorno della settimana (00..53)

        w   giorno della settimana (0..6)

        W   numero di settimana dell'anno con lunedì come primo giorno della settimana (00..53)

        x   rappresentazione locale della data (mese/giorno/anno)

        y   ultime due cifre dell'anno (00..99)

        Y   anno (1970...)

    %b  Dimensione (arrotondata) del file in blocchi da 512 byte.

    %c  Data e ora dell'ultimo modifica dello stato del file nel formato restituito dalla funzione C `ctime'.

    %Ck Data e ora dell'ultimo modifica dello stato del file nel formato specificato da k, che è analogo a quello di %A.

    %d  Profondità del file nell'albero di directory; 0 indica che il file è un argomento della riga di comando.

    %f  Nome del file con le directory iniziali rimosse (solo l'ultimo elemento).

    %F  Tipo del filesystem sul quale risiede il file; questo valore può essere usato per -fstype.

    %g  Nome del gruppo del file, o ID numerico del gruppo se il gruppo non ha nome.

    %G  ID numerico del gruppo del file.

    %h  Directory iniziali del nome del file (tutto tranne l'ultimo elemento).

    %H  Argomento della riga di comando sotto il quale è stato trovato il file.

    %i  Numero di inode del file (in decimale).

    %k  Dimensione (arrotondata) del file in blocchi da 1 Kbyte.

    %l  Oggetto di un link simbolico (una stringa vuota se il file non è un link simbolico).

    %m  Bit di permesso del file (in ottale).

    %n  Numero di link hard al file.

    %p  Nome del file.

    %P  Nome del file rimosso il nome dell'argomento della riga di comando sotto il quale è stato trovato il file.

    %s  Dimensione del file in byte.

    %t  Data e ora dell'ultima modifica al file nel formato restituito della funzione C `ctime'.

    %Tk Data e ora dell'ultima modifica al file nel formato specificato da k, che è analogo a quello di %A.

    %u  Nome dell'utente proprietario del file, o ID numerico dell'utente se l'utente non ha nome.

    %U  ID numerico dell'utente proprietario del file.

    Un carattere `%' seguito da un qualsiasi altro carattere è scartato (mentre è stampato l'altro carattere).

-prune
    Se non è dato -depth, vero; non discende la directory corrente.
    Se è dato -depth, falso; non ha effetto.

-ls Vero; elenca nello standard output il file corrente nel formato di `ls -dils'. Il conteggio dei blocchi è fatto usando blocchi da 1 Kbyte, a meno che non sia impostata la variabile d'ambiente POSIXLY_CORRECT, nel qual caso sono usati blocchi da 512 byte.

  OPERATORI

Sono elencati in ordine di precedenza decrescente:

( espr )
    Forza la precedenza.

! espr
    Vera se espr è falsa.

-not expr
    Identico a ! espr.

espr1 espr2
    And (implicito); espr2 non è valutata se espr1 è falsa.

espr1 -a espr2
    Identico a espr1 espr2.

espr1 -and espr2
    Identico a espr1 espr2.

espr1 -o espr2
    Or; espr2 non è valutata se espr1 è vera.

espr1 -or espr2
    Identico a espr1 -o espr2.

espr1 , espr2
    Lista; sono sempre valutate sia espr1 che espr2. Il valore di espr1 è scartato; il valore della lista è il valore di espr2.

VEDERE ANCHE
locate(1L), locatedb(5L), updatedb(1L), xargs(1L) Finding Files (Info in linea, o stampato).