Last Sync: 2022-05-25 08:00:04
This commit is contained in:
parent
15f260e152
commit
807e851a0d
1 changed files with 59 additions and 0 deletions
59
Programming_Languages/Shell_Scripting/Find.md
Normal file
59
Programming_Languages/Shell_Scripting/Find.md
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
---
|
||||||
|
tags:
|
||||||
|
- Programming_Languages
|
||||||
|
- shell
|
||||||
|
---
|
||||||
|
|
||||||
|
# `find`
|
||||||
|
|
||||||
|
`find` can be used both to locate files and run operations on the files it finds.
|
||||||
|
|
||||||
|
## Main syntax
|
||||||
|
|
||||||
|
### No options
|
||||||
|
Without options specified, `find` alone will return a recursive index of all the files in the directory from which it is run.
|
||||||
|
|
||||||
|
### Sub-directory
|
||||||
|
If we pass a directory to `find` it will repeat the above process but specifically for that directory.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ find i3
|
||||||
|
i3
|
||||||
|
i3/config
|
||||||
|
```
|
||||||
|
|
||||||
|
### Filters
|
||||||
|
We can specify flags as filters (known as 'tests' within the program).
|
||||||
|
|
||||||
|
#### Type
|
||||||
|
Filter by type: file or directory
|
||||||
|
|
||||||
|
```
|
||||||
|
$ find -type d # return dirs only
|
||||||
|
$ find -type f # return files only
|
||||||
|
```
|
||||||
|
|
||||||
|
Within a specified directory:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ find i3 -type f
|
||||||
|
```
|
||||||
|
|
||||||
|
### Filename
|
||||||
|
This is the most frequent use case: filter files by name with globbing.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ find -name "config"
|
||||||
|
./.git/config
|
||||||
|
./i3/config
|
||||||
|
```
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ find -name "*.js"
|
||||||
|
```
|
||||||
|
|
||||||
|
The same, but case insensitive: `iname`
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ find -iname "*.JS"
|
||||||
|
```
|
Loading…
Add table
Reference in a new issue