add find.md
This commit is contained in:
parent
039b30310e
commit
dd290b54b3
|
@ -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/)
|
Loading…
Reference in New Issue