ファイルを検索するコマンド。

find [path...] [expression]

与えられた起点ディレクトリ以下からファイルを検索する。

評価式 (expression)

評価式は

  • オプション
  • 判別式
  • アクション

の3つからなる。

オプションは find コマンド全体の動作についての指定。常に真を返す。 判別式とアクションは真または偽を返す。

各ファイルについて評価式の評価を行なう。

判別式の例

  • -name __pattern__

ファイル名がパターン pattern にマッチすれば真。

例: ホームディレクトリ以下から ~ で終わるファイルを探す

find ~ -name '*~'
  • -size __n__[bckw]

ファイルサイズによる指定。

-size 100k # 100KB ちょうどのファイル
-size -100k # 100KB より小さいファイル
-size +100k # 100KB より大きいファイル
  • -type __c__

ファイルタイプによる指定。

f 通常のファイル
 d ディレクトリ
 l シンボリックリンク
 ...
  • -ctime n
  • -mtime n
  • -atime n

ファイルの作成日時・更新日時・アクセス日時が n*24 時間前

+n は、(n+1)*24 時間前以前の意味。

-2d -1d now
--2-----|------1-----|------0-----|------
        / \
<------/ `-------->
   +1 -1

http://sonic64.com/2005-07-06.html

アクションの例

  • -print

ファイル名をフルパスで標準出力に表示し、改行文字を付ける。

  • -print0

ファイル名をフルパスで標準出力に表示し、ヌル文字を付ける。

  • -exec __command__ ;

コマンドを実行する。ファイル名は {} で指定する。 シェルのメタキャラクタをエスケープするのに注意。

  • -prune

ディレクトリを降りない。

例: .svn 以下を除く

find . -type d -name .svn -prune -o -print

演算子

  • ( expr )

括弧。( ) がシェルのメタキャラクターなのでエスケープする必要があるのに注意。

  • ! expr expr
  • -not expr

NOT: 真偽の反転。! もエスケープする必要がある。

  • expr1 expr2
  • expr1 -a expr2
  • expr1 -and expr2

AND: expr1 が偽なら expr2 は評価しない

  • expr1 -o expr2
  • expr1 -or expr2

OR: expr1 が真なら expr2 は評価しない

  • expr1 , expr2

LIST: expr1 と expr2 の両方を評価し、全体の値は expr2。

参考文献

  • このエントリーをはてなブックマークに追加
エンジニア募集中です!

私たちは新しい仲間を募集しています。