terminalコマンド 『find』 省略版

# 概要
今回は「terminal」のコマンドの１つである「find」を取り上げていきたいと思います。

「find」コマンドはファイルやディレクトリを探してくれるコマンドで、活躍の幅は広いです。

覚えておいて損はないので、これを機に使っていきましょう！

より詳しくわかりやすくこの記事で紹介しているので、よければ見てください！

[terminalコマンド 『find』](https://www.cardenema.com/?p=591)

（上の記事を読んだ前提でこちらの記事では細かい説明を省いているので、チートシートのように使ってください。）

それではみていきましょう！

# 基本的な使い方

```bash
find <ファイル名・ディレクトリ名>
```

# 存在しない時

```bash
find: cardene: No such file or directory
```

# オプション

オプションをつけることで、より「find」コマンドが使いやすくなります。

## name
ファイル名やワイルドカードなどで絞り込みをかけることができます。

```bash
find <検索場所> -name <ファイル名>

# カレントディレクトリから「cardene.py」を検索
find . -name cardene.py

# ルートディレクトリから「cardene.py」を検索
find ~ -name cardene.py

# Desktopから「cardene.py」を検索
fing Desktop -name cardene.py

# カレントディレクトリからpythonファイルを検索
find . -name \*.py 

# ルートディレクトリからテキストファイルを検索
find ~ -name \*.txt

# DesktopからHTMLファイルを検索
fing Desktop -name \*.html
```

## atime
これは「何日前にアクセスしたことがあるファイル」を検索してれます。

```bash
# カレントディレクトリから、今日アクセスしたファイルとディレクトリを検索
find . -atime 0

# ルートディレクトリから、昨日アクセスしたファイルとディレクトリを検索
find ~ -atime 1

# Desktopから、10日前アクセスしたファイルとディレクトリを検索
fing Desktop -atime 10

# カレントディレクトリから、5日前から今日までアクセスしたファイルとディレクトリを検索
find . -atime -5

# ルートディレクトリから、5日よりも前にアクセスしたファイルとディレクトリを検索
find ~ -atime +5

# Desktopから、10日前から今日までアクセスしたファイルとディレクトリを検索
fing Desktop -atime -10
```

## mtime
「何日前に編集したことがあるファイル」を検索してれます。

```bash
# カレントディレクトリから、今日編集したファイルとディレクトリを検索
find . -mtime 0

# ルートディレクトリから、昨日編集したファイルとディレクトリを検索
find ~ -mtime 1

# Desktopから、10日前編集したファイルとディレクトリを検索
fing Desktop -mtime 10

# カレントディレクトリから、5日前から今日まで編集したファイルとディレクトリを検索
find . -atime -5

# ルートディレクトリから、5日よりも前に編集したファイルとディレクトリを検索
find ~ -atime +5

# Desktopから、10日前から今日まで編集したファイルとディレクトリを検索
fing Desktop -atime -10
```

## amin

分単位でも指定。

```bash
# カレントディレクトリから、1分前アクセスしたファイルとディレクトリを検索
find . -mtime 1

# ルートディレクトリから、10分前アクセスしたファイルとディレクトリを検索
find ~ -mtime 10

# Desktopから、30分前アクセスしたファイルとディレクトリを検索
fing Desktop -mtime 30

# カレントディレクトリから、5分以内にアクセスしたファイルとディレクトリを検索
find . -atime -5

# ルートディレクトリから、5分よりも前にアクセスしたファイルとディレクトリを検索
find ~ -atime +5

# Desktopから、10分以内にアクセスしたファイルとディレクトリを検索
fing Desktop -atime -10
```

## mmin

分単位で「編集したことがあるファイルやディレクトリ」を検索してくれます。

```bash
# カレントディレクトリから、1分前編集したファイルとディレクトリを検索
find . -mtime 1

# ルートディレクトリから、10分前編集したファイルとディレクトリを検索
find ~ -mtime 10

# Desktopから、30分前編集したファイルとディレクトリを検索
fing Desktop -mtime 30

# カレントディレクトリから、5分以内に編集したファイルとディレクトリを検索
find . -atime -5

# ルートディレクトリから、5分よりも前に編集したファイルとディレクトリを検索
find ~ -atime +5

# Desktopから、10分以内に編集したファイルとディレクトリを検索
fing Desktop -atime -10
```

## empty

容量がないファイルやディレクトリ、つまりからのファイルやディレクトリを検索してくれます。

```bash
find <検索場所> -empty

# カレントディレクトリから、空のファイルとディレクトリを検索
find . -empty

# ルートディレクトリから、空のファイルとディレクトリを検索
find ~ -empty

# Desktopから、空のファイルとディレクトリを検索
fing Desktop -empty
```

## type

「ファイル」だけ検索したい、「ディレクトリ」のみ検索したい時に役立ちます。

```bash
# ファイルのみ検索
find <検索場所> -type f

# ディレクトリのみ検索
find <検索場所> -type d

# カレントディレクトリから、ファイルを検索
find . -type f

# ルートディレクトリから、ディレクトリを検索
find ~ -type d

# Desktopから、ファイルを検索
fing Desktop -type f
```

## and

検索条件を複数指定し、全ての条件に当てはまるファイルやディレクトリを検索します。

```bash
find <検索場所> <検索条件1> -and <検索条件2>

# カレントディレクトリから、「cardene.pyファイル」を検索
find . -name cardene.py -and -type f

# ルートディレクトリから、「5日以内にアクセスしたディレクトリ」を検索
find ~ -atime -5 -and -type d

# Desktopから、「5分以内に編集した拡張子が.txtのファイル」を検索
fing Desktop -mmin -5 -and -name \*.txt
```

## or
検索条件を複数指定し、いずれかの条件に当てはまるファイルやディレクトリを検索します。

```bash
find <検索場所> <検索条件1> -or <検索条件2>

# カレントディレクトリから、「cardene.pyファイルと拡張子が.txtのファイル」を検索
find . -name cardene.py -or -name \*.txt

# ルートディレクトリから、「拡張子が.txtのファイルと拡張子が.pyのファイル」を検索
find ~ -name \*.txt -or -name \*.py
```

## not

今後は逆に指定した条件に当てはまらないファイルやディレクトリを検索します。

```bash
find -not <検索場所> <検索条件>

# カレントディレクトリから、「拡張子が.txtのファイル以外のファイルとディレクトリ」を検索
find . -not -name \*.txt

# ルートディレクトリから、「拡張子が.txtのファイルと拡張子が.pyのファイル以外のファイルとディレクトリ」を検索
find ~ -not -name \*.txt -and -name \*.py
```

# 最後に
今回は「findコマンド」の使い方を見てきました。

よくファイルを検索するとき使うコマンドなので、ぜひこれを機に使ってみてください。

また、他にもオプションはあるので、自分が便利だと思ったら追記します。

自分で調べてみるのも面白いと思うので、それもお勧めします。

何か質問などがあれば、下のTwitterのDMかここのコメントで聞いてください！

それでは！