# How to use "find" command in Linux

As name implies **find** command is used to find files/directories in the Linux System.

It recursively lists all the files/directories in the provided path.

* `man find` to get manual of find command
    
* `/- any_option` to look for more info of specific option
    

**Syntax:**

* find \[filters\]
    
* find \[path\] \[filters\] \[criteria\] \[actions\]
    

**path:** Starting directory for search

* If no path is given, current path is consider by default.
    
* `.` for current path
    
* `/` for root path, searches in the whole system
    

**filters:** Additional conditions for search

* Many Filters can be combined as we want. The default operation performed is AND.
    
* Use **\-o** so that Result is diplayed when either of the condition is met or true, useful when multiple filters applied
    
* **\-name** is most used filter, it is use to search for exact filename.
    
* **\-mindepth, -maxdepth** filters are used to control how deep the find recurses.
    
* **\-not** to invert filters, when used that expression will be excluded or not shown
    
* **\-type** \[**f** or **d**\] (type of file to search, f for files, d for directories)
    
* **\-size** \[**+** or **\-**\] (Matches files based on their size, + for greater, - for lesser)
    
* **\-empty** for finding empty files as a way to declutter
    

**criteria:** For filtering or locating files/directories

* **\*** is used to search for multiple files.
    

**actions:** Perform a specified command on each and every matched file/directory.

* `{}` is a placeholder that represents the current file or directory.
    

* **\-delete** to delete all matched files/folders
    
* **\-exec** executed the specified command
    

---

### Find all files in a current path

```nginx
find . -type f
```

### Find all directories in a current path

```nginx
find . -type d
```

### Find a file/folder with Exact name

```nginx
find path_to_search/ -name filename.txt

find / -name foldername
```

### Find all empty files

```nginx
find . -type f -empty
```


### Find all the files with `.jpg` extension

```nginx
find -name '*.jpg'
```

### Find all the files with either `.jgp` OR `.png` extension

```nginx
find -name '*.jpg' -o -name '*.png'
```

### Find all the files/folder which are min 2 Directories deep

```nginx
find path/ -mindepth 2
```

### Find only the files/folders that are directly inside the path we provided

```nginx
find . -maxdepth 1
```

### Find all the files which are not ending with `.jpg`

```nginx
find . -type f -not -name '*.jpg'
```

### Find all files with size greater than 10 MB

```nginx
find path/ -type f -size +10M
```

### Find files with only size less than 10 MB

```nginx
find path/ -type f -size -10M
```

### Delete all the files with size less than 10 MB

```nginx
find path/ -type f -size -7M -delete
```

### List sha384sum of all the files

* **{}** represents current file/directory
    
* **;** to tell where command ends
    
* **\\** to escape ";"
    

```nginx
find path/ -type f -exec sha384sum {} \;
```

---

Thanks to My Guru Tom Hudson (aka tomnomnom) for this Beautiful guide

%[https://www.youtube.com/watch?v=U2fsUy0viLA&ab_channel=TomHudson]
