CentOS7に限らずLinuxやUNIXを運用していく中でfindコマンドというのは結構な頻度で使われていることと思います。大抵の場合は検索起点ディレクトリを指定し、ワイルドカードを用いた名前検索で事足りることが多いのですが、ファイルの更新日時などで使用することも時々あります。そういった場合に頻繁に使うわけではないのでオプションを覚えておらず、都度都度調べて使用しています。
ここではそのときのため用にfindで使えるオプション一覧をまとめていきます。
まず最も頻繁に使うファイル名で検索のときのコマンドは以下のようになります。
# find / -name "hogehoge" -print |
検索起点をルート ( / ) としてファイル名がhogehogeのものを検索し、ヒットしたものを表示するという意味です。ワイルドカードを用いることで任意の文字列を含んだファイル名も簡単に検索できます。また、表示するだけなら最後の-printは省略可能です。
上記の検索条件-nameのところでファイル名だけでなく、様々な条件を指定することが可能です。以下、そのオプション一覧です。
オプション一覧 | 説明 |
-amin | ファイルの最終アクセス日時がn分前のもの。+nを指定するとn分以前、 -nを指定するとn分以後となる。 |
-atime | ファイルの最終アクセス日時がn日前のもの。+nを指定するとn日以前、 -nを指定するとn日以後となる。 但し、日付を計算する際に現在時刻との時間差を24で割り、 余りは切り捨てられるので-atime +1を指定すると該当ファイルは少なくとも 2日前にアクセスされてなければならない |
-cmin | ファイルの最終ステータス変更日時がn分前のもの。+nを指定すると n分以前、-nを指定するとn分以後となる。 |
-ctime | ファイルの最終ステータス変更日時がn日前のもの。+nを指定するとn日以前、 -nを指定するとn日以後となる。但し、日付を計算する際に現在時刻との 時間差を24で割り、余りは切り捨てられるので-ctime +1を指定すると 該当ファイルは少なくとも2日前にアクセスされてなければならない |
-mmin n | ファイルの最終内容更新日時がn分前のもの。+nを指定するとn分以前、 -nを指定するとn分以後となる。 |
-mtime n | ファイルの最終内容更新日時がn日前のもの。+nを指定するとn日以前、 -nを指定するとn日以後となる。但し、日付を計算する際に現在時刻との 時間差を24で割り、余りは切り捨てられるので-mtime +1を指定すると 該当ファイルは少なくとも2日前にアクセスされてなければならない |
-gid n | ファイルのグループID番号がnなら真 |
-group gname | ファイルの属するグループがgnameならば真 |
-uid n | ファイル所有者のユーザID番号がnならば真 |
-user uname | ファイルの所有者がunameというユーザならば真 |
-nogroup | ファイルのグループID番号に対応するグループが存在しなければ真 |
-nouser | ファイルのユーザID番号に対応するユーザが存在しなければ真 |
-perm mode | ファイルの属性がmodeと一致していれば真 |
-size n[cwbkMG] | ファイルが n 単位分の領域を使用していれば、真。 サイズの単位は 以下のものが使える。 `b’ 単位はブロック。1 ブロックは 512 バイト。(デフォルト) |
-type c | ファイルのタイプが c であれば真。c の位置には実際には 以下の文字が来る。
b ブロック・スペシャルファイル (バッファあり) |
例えば5日より前に更新されたファイルを表示する場合は以下のようにコマンドを実行すれば良いということになります。
# find / -name -mtime +5 -type -f |
以上が代表的な条件検索となります。デフォルトでは上記の条件で検索して、ヒットしたものを表示するというアクションになりますが、表示以外のアクションを実行することも可能です。以下が代表的なアクションです。
アクション | 説明 |
-delete | ファイルを消去する。 消去に成功すれば、真を返す。 消去に失敗した場合は、エラーメッセージを表示する |
-exec command | command を実行する。command の返り値が 0 ならば、真を返す。 |
-ok command ; | -exec と似ているが、まずユーザに問い合わせを行う。 ユーザーが同意すれば、コマンドを実行する。 |
ただ、アクションのところでデフォルトのprint以外を指定することは実際の運用の中ではあまりありません。アクションよりも上記の条件指定の部分をしっかり抑えておいて頂ければと思います。