GNU/Linux >> Linux Esercitazione >  >> Linux

25 semplici esempi di comando trova Linux

Comando trova Linux

Il comando trova di Linux è un comando molto utile e pratico per cercare file dalla riga di comando. Può essere utilizzato per trovare file in base a vari criteri di ricerca come autorizzazioni, proprietà dell'utente, data/ora di modifica, dimensione ecc. In questo post impareremo a utilizzare il comando trova insieme alle varie opzioni che supporta.

Il comando find è disponibile sulla maggior parte delle distribuzioni Linux per impostazione predefinita, quindi non è necessario installare alcun pacchetto. Il comando find è essenziale da imparare, se vuoi diventare super produttivo con la riga di comando su Linux.

La sintassi di base del comando trova è simile a questa

$ find location comparison-criteria search-term

1. Elenca tutti i file nelle directory correnti e secondarie

Questo comando elenca tutti i file nella directory corrente e le sottodirectory nella directory corrente.

$ find
.
./abc.txt
./subdir
./subdir/how.php
./cool.php

Il comando è lo stesso del seguente

$ find .
$ find . -print

2. Cerca una directory o un percorso specifico

Il comando seguente cercherà i file nella directory test nella directory corrente. Elenca tutti i file per impostazione predefinita.

$ find ./test
./test
./test/abc.txt
./test/subdir
./test/subdir/how.php
./test/cool.php

Il comando seguente cerca i file in base al loro nome.

$ find ./test -name "abc.txt"
./test/abc.txt

Possiamo anche usare i caratteri jolly

$ find ./test -name "*.php"
./test/subdir/how.php
./test/cool.php

Si noti che tutte le sottodirectory vengono cercate in modo ricorsivo. Quindi questo è un modo molto potente per trovare tutti i file di una determinata estensione.

Cercando di cercare nella directory "/" che è la radice, cercherebbe l'intero file system inclusi i dispositivi montati e i dispositivi di archiviazione di rete. Quindi sii attento. Ovviamente puoi premere Ctrl + c in qualsiasi momento per interrompere il comando.

When specifying the directory ("./test" in this example), its fine to omit the trailing slash. However, if the directory is actually a symlink to some other location then you MUST specify the trailing slash for it to work properly (find ./test/ ...)

Ignora il caso

Spesso è utile ignorare il caso durante la ricerca di nomi di file. Per ignorare il caso, usa l'opzione "iname" invece dell'opzione "nome".

$ find ./test -iname "*.Php"
./test/subdir/how.php
./test/cool.php
Its always better to wrap the search term (name parameter) in double or single quotes. Not doing so will seem to work sometimes and give strange results at other times.

3. Limita la profondità di attraversamento della directory

Per impostazione predefinita, il comando find percorre l'intero albero di directory in modo ricorsivo, il che richiede tempo e risorse. Tuttavia, è possibile specificare la profondità dell'esplorazione della directory. Ad esempio, non vogliamo scendere di più di 2 o 3 livelli nelle sottodirectory. Questo viene fatto usando l'opzione maxdepth.

$ find ./test -maxdepth 2 -name "*.php"
./test/subdir/how.php
./test/cool.php
$ find ./test -maxdepth 1 -name *.php
./test/cool.php

Il secondo esempio utilizza maxdepth di 1, il che significa che non scenderà al di sotto di 1 livello di profondità, né solo nella directory corrente.

Questo è molto utile quando vogliamo fare una ricerca limitata solo nella directory corrente o sottodirectory di massimo 1 livello e non nell'intero albero delle directory che richiederebbe più tempo.

Proprio come maxdepth c'è un'opzione chiamata mindepth che fa ciò che suggerisce il nome, ovvero andrà almeno a livello N in profondità prima di cercare i file.

4. Inverti corrispondenza

È anche possibile cercare file che non corrispondono a un determinato nome o modello. Questo è utile quando sappiamo quali file escludere dalla ricerca.

$ find ./test -not -name "*.php"
./test
./test/abc.txt
./test/subdir

Quindi nell'esempio sopra abbiamo trovato tutti i file che non hanno l'estensione php, o file non php. Il comando trova supporta anche il punto esclamativo al posto di not.

find ./test ! -name "*.php"

5. Combina più criteri di ricerca

È possibile utilizzare più criteri quando si specifica il nome e l'inversione. Ad esempio

$ find ./test -name 'abc*' ! -name '*.php'
./test/abc.txt
./test/abc

Il comando trova sopra cerca i file che iniziano con abc nei loro nomi e non hanno un'estensione php. Questo è un esempio di come è possibile creare potenti espressioni di ricerca con il comando trova.

Operatore OPPURE

Quando si utilizzano criteri di nome multipli, il comando trova li combina con l'operatore AND, il che significa che verranno abbinati solo i file che soddisfano tutti i criteri. Tuttavia, se abbiamo bisogno di eseguire una corrispondenza basata su OR, il comando trova ha l'opzione "o".

$ find -name '*.php' -o -name '*.txt'
./abc.txt
./subdir/how.php
./abc.php
./cool.php

Il comando precedente cerca i file che terminano con l'estensione php o con l'estensione txt.

6. Cerca solo file o solo directory

A volte vogliamo trovare solo file o solo directory con un determinato nome. Anche Find può farlo facilmente.

$ find ./test -name abc*
./test/abc.txt
./test/abc
Only files
$ find ./test -type f -name "abc*"
./test/abc.txt
Only directories
$ find ./test -type d -name "abc*"
./test/abc

Abbastanza utile e maneggevole!

7. Cerca più directory insieme

Quindi diciamo che vuoi cercare all'interno di 2 directory separate. Anche in questo caso, il comando è molto semplice

$ find ./test ./dir2 -type f -name "abc*"
./test/abc.txt
./dir2/abcdefg.txt

Verifica che abbia elencato i file da 2 directory separate.

8. Trova i file nascosti

I file nascosti su Linux iniziano con un punto. Quindi è facile menzionarlo nei criteri del nome ed elencare tutti i file nascosti.

$ find ~ -type f -name ".*"

9. Trova file con determinate autorizzazioni

Il comando trova può essere utilizzato per trovare file con un'autorizzazione specifica utilizzando l'opzione "perm". Il comando seguente cerca i file con l'autorizzazione 0664

$ find . -type f -perm 0664
./abc.txt
./subdir/how.php
./abc.php
./cool.php

Questo può essere utile per trovare file con autorizzazioni errate che possono causare problemi di sicurezza. L'inversione può essere applicata anche al controllo dei permessi.

$ find . -type f ! -perm 0777
./abc.txt
./subdir/how.php
./abc.php
./cool.php

10. Trova i file con i bit sgid/suid impostati

L'opzione "perm" del comando find accetta la stessa stringa di modalità come chmod. Il comando seguente trova tutti i file con l'autorizzazione 644 e il bit sgid impostato.

# find / -perm 2644

Allo stesso modo usa 1664 per bit appiccicoso. L'opzione perm supporta anche l'utilizzo di una sintassi alternativa al posto dei numeri ottali.

$ find / -maxdepth 2 -perm /u=s 2>/dev/null
/bin/mount
/bin/su
/bin/ping6
/bin/fusermount
/bin/ping
/bin/umount
/sbin/mount.ecryptfs_private

Nota che "2>/dev/null" rimuove quelle voci che hanno un errore di "Autorizzazione negata"

11. Trova file di sola lettura

Trova tutti i file di sola lettura.

$ find /etc -maxdepth 1 -perm /u=r
/etc
/etc/thunderbird
/etc/brltty
/etc/dkms
/etc/phpmyadmin
... output truncated ...

12. Trova file eseguibili

Il comando seguente troverà i file eseguibili

$ find /bin -maxdepth 2 -perm /a=x
/bin
/bin/preseed_command
/bin/mount
/bin/zfgrep
/bin/tempfile
... output truncated ...

13. Trova i file di proprietà di un particolare utente

Per trovare tutto o un singolo file chiamato tecmint.txt nella directory /root della radice del proprietario.

$ find . -user bob
.
./abc.txt
./abc
./subdir
./subdir/how.php
./abc.php

Potremmo anche specificare il nome del file o qualsiasi criterio relativo al nome insieme ai criteri utente

$ find . -user bob -name '*.php'

È molto facile vedere come possiamo creare criteri dopo criteri per restringere la nostra ricerca di file corrispondenti.

14. Cerca i file appartenenti al gruppo

Trova tutti i file che appartengono a un particolare gruppo.

# find /var/www -group developer

Sapevi che puoi cercare nella tua home directory usando il simbolo ~?

$ find ~ -name "hidden.php"

Facile!!

Cerca file e directory in base alla data e all'ora di modifica

Un altro ottimo criterio di ricerca supportato dal comando find è la modifica e la data/ora di accesso. Questo è molto utile quando vogliamo scoprire quali file sono stati modificati in un determinato intervallo di tempo o di date. Facciamo alcuni esempi

15. Trova i file modificati N giorni fa

Per trovare tutti i file che sono stati modificati 50 giorni indietro.

# find / -mtime 50

16. Trova i file a cui hai avuto accesso negli ultimi N giorni

Trova tutti i file a cui è stato effettuato l'accesso negli ultimi 50 giorni.

# find / -atime 50

17. Trova i file modificati in un intervallo di giorni

Trova tutti i file che sono stati modificati tra 50 e 100 giorni fa.

# find / -mtime +50 –mtime -100

18. Trova i file modificati negli ultimi N minuti.

Trova i file modificati nell'ultima ora.

$ find /home/bob -cmin -60

19. File modificati nell'ultima ora

Per trovare tutti i file che sono stati modificati nell'ultima ora.

# find / -mmin -60

20. Trova i file consultati nell'ultima ora

Per trovare tutti i file a cui si è effettuato l'accesso nell'ultima ora.

# find / -amin -60

21. Trova i file di una determinata dimensione

Cerca file e directory in base alle dimensioni. Per trovare tutti i file da 50 MB, usa.

# find / -size 50M

22. Trova i file in un intervallo di dimensioni

Per trovare tutti i file maggiori di 50 MB e inferiori a 100 MB.

$ find / -size +50M -size -100M

23. Trova i file più grandi e più piccoli

Il comando find, se utilizzato in combinazione con il comando ls e sort, può essere utilizzato per elencare i file più grandi.
Il comando seguente visualizzerà i 5 file più grandi nella directory corrente e nella relativa sottodirectory. L'esecuzione dell'operazione potrebbe richiedere del tempo a seconda del numero totale di file che il comando deve elaborare.

$ find . -type f -exec ls -s {} \; | sort -n -r | head -5

Allo stesso modo, se ordinato in ordine crescente, mostra prima i file più piccoli

$ find . -type f -exec ls -s {} \; | sort -n | head -5

24. Trova file e directory vuoti

Il comando seguente utilizza l'opzione "svuota" del comando trova, che trova tutti i file vuoti.

# find /tmp -type f -empty

Per archiviare tutte le directory vuote utilizzare il tipo "d".

$ find ~/ -type d -empty

Davvero molto semplice e facile

Alcune operazioni avanzate

Il comando find non solo trova i file in base a determinati criteri, ma può anche agire su quei file usando qualsiasi comando Linux. Ad esempio, potremmo voler eliminare alcuni file.

Ecco alcuni rapidi esempi

25. Elenca i file trovati

Diciamo che abbiamo trovato i file usando il comando trova e ora vogliamo elencarli come avrebbe fatto il comando ls. Questo è molto facile.

$ find . -exec ls -ld {} \;
drwxrwxr-x 4 enlightened enlightened 4096 Aug 11 19:01 .
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./abc.txt
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:48 ./abc
drwxrwxr-x 2 enlightened enlightened 4096 Aug 11 16:26 ./subdir
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:26 ./subdir/how.php
-rw-rw-r-- 1 enlightened enlightened 29 Aug 11 19:13 ./abc.php
-rw-rw-r-- 1 enlightened enlightened 0 Aug 11 16:25 ./cool.php

26. Elimina tutti i file o le directory corrispondenti

Il comando seguente rimuoverà tutti i file di testo nella directory tmp.

$ find /tmp -type f -name "*.txt" -exec rm -f {} \;

La stessa operazione può essere eseguita con le directory, basta inserire il tipo d, al posto del tipo f.

Prendiamo un altro esempio in cui vogliamo eliminare file di dimensioni superiori a 100 MB

$ find /home/bob/dir -type f -name *.log -size +10M -exec rm -f {} \;

Riepilogo

Quindi questo è stato un breve tutorial sul comando linux find . Il comando trova è uno dei comandi più essenziali sul terminale linux, che consente la ricerca di file molto semplice. È un must per tutti gli amministratori di sistema. Quindi imparalo. Hai qualche domanda? Lascia un commento qui sotto.


Linux
  1. sa Esempi di comandi in Linux

  2. w Esempi di comandi in Linux

  3. ac Esempi di comandi in Linux

  4. Esempi di comandi df in Linux

  5. du Esempi di comandi in Linux

Comando Trova Linux con esempi pratici

50 esempi semplici e utili di comando Trova in Linux

15 esempi super utili del comando Trova in Linux

Tutorial comando trova Linux (con esempi)

Mamma, l'ho trovato! — 15 Esempi pratici di comandi Trova Linux

Esempi di comandi id in Linux