1.findとは
Linux でファイルやディレクトリを探すときによく使うコマンド。オプションで細かく検索できる。
検索方法は完全一致だが、ワイルドカードを使うことで部分一致にできる。
2.使い方
(1)書式
find [検索開始ディレクトリ] [検索条件・オプション] [アクション]
例)find ./example -name “*.txt”
→./exampleディレクトリ以下で.txtが付くファイルを探し、見つかった全てを出力する。
(2)オプション
※特に覚えておいた方がいいオプションは黄色ラインで示しています。
①find [検索開始ディレクトリ] -name “パターン”
パターンにマッチするファイル名を検索。
②find [検索開始ディレクトリ] -iname “パターン”
パターンにマッチするファイル名を検索。※大文字小文字を無視
③find [検索開始ディレクトリ] -type ファイルタイプ
ファイルタイプに一致するファイルを検索。
【ファイルタイプ】
・f…通常ファイル
・d…ディレクトリ
・l…シンボリックリンク
④find [検索開始ディレクトリ] -size +nM※nは任意の数字
ファイルサイズで絞り込む。
(+=より大きい, -=より小さい, 単位: c, k, M, G)
⑤find [検索開始ディレクトリ] -mtime -n※nは任意の数字
最終更新がn日以内のもの。(+n=より古い, -n=より新しい)
⑥find [検索開始ディレクトリ] -atime
最終アクセス日時。
⑦find [検索開始ディレクトリ] -ctime
作成・属性変更日時。
⑧find [検索開始ディレクトリ] -user ユーザー名
ファイルの所有者で絞り込む。
⑨find [検索開始ディレクトリ] -group グループ名
グループで絞り込む。
⑩find [検索開始ディレクトリ] -perm nnn※nは権限の数字
パーミッションで絞り込む。
⑪find [検索開始ディレクトリ] -empty
空のディレクトリやファイルだけ。
⑫find [検索開始ディレクトリ] -maxdepth n※nは任意の数字
検索開始ディレクトリから見て、最大でn層まで検索する。
※nが0の時は検索開始ディレクトリのみ検索する。
⑬find [検索開始ディレクトリ] -mindepth n※nは任意の数字
検索開始ディレクトリから見て,n層から検索する。
※nが0の時は検索開始ディレクトリから検索する。
(3)アクション※見つかったファイルに対して行う操作
①find [検索開始ディレクトリ] [検索条件・オプション] -print
検索結果の表示。※デフォルト
②find [検索開始ディレクトリ] [検索条件・オプション] -ls
ls形式でファイルの詳細を表示する。
③find [検索開始ディレクトリ] [検索条件・オプション] -delete
検索結果のファイルを削除。
④find [検索開始ディレクトリ] [検索条件・オプション] -exec [コマンド] {} \;
見つけたファイル・ディレクトリを使って、[コマンド]で指定したコマンドを1件ずつ実行。
※{}は、見つかったファイル・ディレクトリに自動で置き換わる。
※\;は、-execの終了を示す。
⑤find [検索開始ディレクトリ] [検索条件・オプション] -exec [コマンド] {} +
見つけたファイル・ディレクトリを使って、[コマンド]で指定したコマンドをまとめて実行。
例)find . -name “*.log” -exec rm {} +
→見つかったファイルを「rm file1.log file2.log file3.log」という風に一括で渡して実行。
※+は、見つかったファイル名をまとめてコマンドに渡すという意味。