find : ファイルを検索する
構文
find [path] [検索条件] [アクション]
説明
ファイル名やファイルの種類、最終更新日のようなファイルの属性をもとにファイルの検索をおこなう。また、検索したファイルに対してコマンドを実行する。
検索条件
-name filename | ファイル名がfilenameとマッチするファイルを検索する |
---|---|
-perm num | 許可属性がnum(8進数)と一致するファイルを検索する |
-type c | ファイルのタイプがcであるファイルを検索する |
-user user | 所有者がuserであるファイルを検索する |
-group group | ファイルがgroupに属しているファイルを検索する |
-size n | nブロックサイズ(1ブロックは512バイト)であるファイルを検索する |
-atime n | n日前に最終アクセスがあったファイルを検索する |
-mtime n | n日前に最終更新されたファイルを検索する |
-empty | 空のファイルやディレクトリを検索する |
アクション
検索結果をフルパスで標準出力する | |
-ls | 検索結果をパス名など、ls -gildsに相当する情報を表示する |
-exec command \; | 検索後、コマンドcommandを実行する。検索結果をcommandに引き渡すのに{}をもちいる。 例:find ~ -name '*bak" -exec rm {} \; 上記の例で-execにつづくrm {} \;が実行されるコマンド。最後の";"は-execのパラメタの終わりを示しており、その前の"\"は、";"がシェルに解釈されないようにエスケープする為のもの。 |
-ok command \; | -execと同じ。ただし、コマンドの実行前にユーザに確認する |
演算子
複数の条件式を用いる時に演算子で結ぶ
!expr | exprが異なる場合、検索対象となる |
---|---|
expr1 -and expr2 | expr1とexpr2がともに真のとき検索対象となる |
expr1 -or expr2 | expr1またはexpr2が真のとき検索対象となる |
使用例
カレントディレクトリ以下にある*.v(verilogソースファイル)を検索 $ find . -name "*.v" -ls 311729 4 -rw-r--r-- 1 wataru wataru 2295 7月 1 16:17 ./top.v 311733 4 -rw-r--r-- 1 wataru wataru 1163 7月 1 16:17 ./decoder.v 311744 4 -rw-r--r-- 1 wataru wataru 3665 7月 1 16:18 ./tb.v ホームディレクトリ以下にある*~(emacsのバックアップファイル)を全て削除 $ find ~/ -name "*~" -exec rm {} \;