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