From dd290b54b3fbf98772c1da80ca210fa8a7e187af Mon Sep 17 00:00:00 2001 From: piccihud Date: Sun, 9 Apr 2023 16:01:05 +0200 Subject: [PATCH] add find.md --- find.md | 143 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 143 insertions(+) create mode 100644 find.md diff --git a/find.md b/find.md new file mode 100644 index 0000000..0727ad9 --- /dev/null +++ b/find.md @@ -0,0 +1,143 @@ +# find + +Il comando **find** permette di cercare files e non solo da riga di comando. + +Se il percorso del file non è specificato, viene ricercato nella directory corrente e nelle sue sottodirectory. + +Questa la sua struttura generale: + +```bash +find path pattern +``` +## Ricercare un file per nome + +```bash +find -iname abc.txt +``` +In questo modo, viene cercato il file abc.txt (-i sta per insensitive) nella cartella corrente. + +### Specificare il tipo del pattern + +```bash +find /etc -type f -name "*.conf" +``` +dove il tipo del file può essere: + +| -type | Descrizione | +|-------|-------------| +| f | File | +| d | Directory | +| l | Link | + +## Ricercare in più cartelle + +```bash +find ~/Desktop/example1/ ~/Desktop/example2/ -name 'abc*.*' +``` + +## size + +Ricercare solo file più grandi di... + +```bash +find -size +2000M +``` + +## Esclusione di alcuni file dalla ricerca + +Il comando find può anche escludere alcuni tipi di file dal risultato della ricerca: + +```bash +find -name '*abc*' -type f \( ! -name '*.msi' \) +``` +Nell'esempio, vengono esclusi tutti i file *\*abc\*.msi* + +## exec + +È possibile eseguire comandi sui risultati di find. + +La sintassi di base per eseguire la ricerca con exec è la seguente: + +```bash +find [path] [arguments] -exec [command] {} \; +``` + +- *[comand]* il comando da eseguire; +- *{}* è un segnaposto per i risultati dati dal comando find; +- *\;* che per ogni risultato trovato, il [comand] viene eseguito, ossia, come se fossero passati in questo modo: + +```bash +ls file1.txt +ls file2.txt +ls file3.txt +``` + +### Alcuni esempi + +Rinominare i file + +```bash +> sudo find . -type f -name file\* -exec ls -l {} \; + +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file2.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file7.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file4.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file8.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file10.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file1.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file9.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file5.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file3.txt +-rw-r--r-- 1 davide davide 0 9 apr 15.50 ./file6.txt + +> sudo find . -type f -name file\* -exec mv {} {}_renamed \; +> ll + +Permissions Size User Date Modified Name +.rw-r--r-- 0 davide 9 apr 15:50  file1.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file2.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file3.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file4.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file5.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file6.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file7.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file8.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file9.txt_renamed +.rw-r--r-- 0 davide 9 apr 15:50  file10.txt_renamed +``` + +Eliminare i file più grandi di... + +```bash +find ~/Desktop -size +100M -exec rm {} \; +``` +Modificare proprietario dei file: + +```bash +> sudo find . -type f -name file\* -exec chown root:root {} \; +> ll + +Permissions Size User Date Modified Name +.rw-r--r-- 0 root 9 apr 15:50  file1.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file2.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file3.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file4.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file5.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file6.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file7.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file8.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file9.txt_renamed +.rw-r--r-- 0 root 9 apr 15:50  file10.txt_renamed +``` +Eliminare tutti i file corrispondenti ad un pattern di ricerca: + +```bash +> sudo find . -type f -name file\* -exec rm -rf {} \; +> ll +``` + +## Collegamenti + +- [https://linuxhandbook.com/find-files-by-name/](https://linuxhandbook.com/find-files-by-name/) +- [https://linuxhandbook.com/find-exec-command/](https://linuxhandbook.com/find-exec-command/) +- [https://www.ionos.it/digitalguide/server/configurazione/comando-find-di-linux/](https://www.ionos.it/digitalguide/server/configurazione/comando-find-di-linux/)