Trova comando in Linux (Trova file e directory)
Il comandofind è uno degli strumenti più potenti nell’arsenale degli amministratori di sistema Linux. Cerca file e directory in una gerarchia di directory basata su un’espressione data dall’utente e può eseguire l’azione specificata dall’utente su ciascun file abbinato.
È possibile utilizzare il comando find per cercare file e directory in base alle loro autorizzazioni, tipo, data, proprietà, dimensione e altro ancora., Può anche essere combinato con altri strumenti come greposed.
trovare la Sintassi del Comando #
La sintassi generale per il find comando è la seguente:
- 
optionsattributo controlla il trattamento dei link simbolici, le opzioni di debug, e metodo di ottimizzazione.
- L’attributopath...definisce la directory di partenza o le directory in cui find cercherà i file.,
- L’attributoexpressionè costituito da opzioni, modelli di ricerca e azioni separati da operatori.
Per cercare i file in una directory, l’utente che invoca il comando find deve avere i permessi di lettura su quella directory.
Diamo un’occhiata al seguente esempio:
Trova i file per nome #
Trovare i file per nome è probabilmente l’uso più comune del comandofind., Per trovare un file con il suo nome, usa l’opzione-name seguita dal nome del file che stai cercando.
Per esempio, per la ricerca di un file chiamato document.pdf nel /home/linuxize directory, utilizzare il seguente comando:
Per eseguire una ricerca case-insensitive, modificare il -name opzione -iname:
Il comando di sopra match “del Documento.pdf”, ” DOCUMENTO.PDF” ..ecc.,
Trova file per estensione #
La ricerca di file per estensione equivale alla ricerca di file per nome. Per esempio, per trovare tutti i file che terminano con .log.gz all’interno del tag /var/log/nginx directory, digitare:
e ‘ importante ricordare che è necessario citare il modello o la fuga l’asterisco * il simbolo con la barra rovesciata \ in modo che non venga interpretata dalla shell quando si utilizza il carattere jolly.,
Per trovare tutti i file che non corrispondono alla regex *.log.gzè possibile utilizzare l’opzione -not. Ad esempio, per trovare tutti i file che non terminano in *.log.gz dovresti usare:
Trova i file per tipo #
A volte potrebbe essere necessario cercare tipi di file specifici come file regolari, directory o collegamenti simbolici. In Linux, tutto è un file.,div>: named pipe (FIFO)
s: socketPer esempio, per trovare tutte le directory nella directory di lavoro corrente , utilizzare:
L’esempio comune sarebbe quello di cambiare ricorsivamente il sito web di autorizzazioni di file 644 e le autorizzazioni per la directory 755 con il chmod comando:
Trovare i File per Dimensione #
Per trovare i file in base alla dimensione del file, passare il -size parametro con i criteri di dimensione.,9fdb538a6b”>: blocchi da 512 byte (default) 
c: bytew: due byte parolek: KilobyteM: MegabyteG: GigabyteIl comando riportato di seguito troverete tutti i file esattamente 1024 byte all’interno del /tmp directory:
find comando consente inoltre di ricerca per i file che sono più o meno di una determinata dimensione.,
Nel seguente esempio, cerchiamo tutti i file inferiori a 1MB all’interno della directory di lavoro corrente. Notare il meno - simbolo prima che il valore di dimensione:
Se si desidera cercare i file con una dimensione maggiore di 1MB, allora avete bisogno di usare il plus + simbolo:
È possibile anche la ricerca di file all’interno di una gamma di dimensioni., Il seguente comando troverà tutti i file tra 1 e 2MB:
Trova i file per data di modifica #
Il find cerca anche i file in base alla loro ultima modifica, accesso o tempo di modifica.
Come quando si cerca per dimensione, utilizzare i simboli più e meno per “maggiore di” o “minore di”.
Diciamo che qualche giorno fa hai modificato uno dei file di configurazione di dovecot, ma hai dimenticato quale., È possibile filtrare facilmente tutti i file sotto il /etc/dovecot/conf.d directory che termina con .conf ed è stato modificato negli ultimi cinque giorni:
Ecco un altro esempio di filtrare i file in base alla data di modifica utilizzando il -daystart opzione., Il comando riportato di seguito vi elenco tutti i file nel /home directory che sono stati modificati 30 o più giorni fa:
Trovare i File da Autorizzazioni #
-perm opzione ti consente di cercare file in base alle autorizzazioni di file.,
Per esempio, per trovare tutti i file con i permessi di esattamente 775 all’interno del tag /var/www/html directory, utilizzare:
È possibile prefisso numerico con meno - o slash /.
Quando slash / viene utilizzato come prefisso, almeno una categoria (utente, gruppo o altri) deve avere almeno i rispettivi bit impostati per far corrispondere un file.,
Considera il seguente comando di esempio:
Il comando precedente corrisponderà a tutti i file con le autorizzazioni di lettura impostate per utente, gruppo o altri.
 Se minus- viene utilizzato come prefisso, quindi affinché il file corrisponda, devono essere impostati almeno i bit specificati., Il comando seguente consente di cercare i file con permessi di scrittura e lettura per il proprietario e il gruppo e sono leggibili da altri utenti:
Trova File Proprietario #
Per trovare i file di proprietà di un particolare utente o gruppo, utilizzare il tag -user e -group opzioni.
Ad esempio, per cercare tutti i file e le directory di proprietà dell’utente linuxize, dovresti eseguire:
Ecco un esempio reale., Diciamo che si desidera trovare tutti i file di proprietà dell’utente www-data e modificare le proprietà dei file corrispondenti da www-data nginx:
Trova ed Elimina i File #
Per eliminare tutti i file corrispondenti, aggiungere il -delete opzione al termine del match di espressione.
Assicurarsi di utilizzare questa opzione solo quando si è sicuri che il risultato corrisponda ai file che si desidera eliminare., È sempre una buona idea stampare i file corrispondenti prima di utilizzare l’opzione -delete.
Ad esempio, per eliminare tutti i file che terminano con .temp da /var/log/, si dovrebbe usare:
-delete con estrema cautela. Il comandofind viene valutato come espressione e se si aggiunge prima l’opzione-delete, il comando eliminerà tutto ciò che è al di sotto dei punti di partenza specificati.,Quando si tratta di directory,findpuò eliminare solo directory vuote, comermdir.
Conclusione #
Vi abbiamo mostrato come utilizzare il comandofind con varie opzioni e criteri.
Questo articolo dovrebbe darti una comprensione fondamentale di come individuare i file sui tuoi sistemi Linux. Puoi anche visitare la pagina man find e leggere tutte le altre potenti opzioni del comando find.