それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

すぐわかるfindコマンドの使い方

find コマンドは ファイルとディレクトリを見つけるコマンド.ファイルを検索します.ファイルの検索はファイルのメタデータを調べます.つまりi-nodeに入ってる情報。つまりパス名,アクセス時刻,アクセス権です

find使い方。

一番最初にfind コマンドを使ってみる

cd /home/takuya 
find #ホームディレクトリのファイルを一覧する

find はカレントディレクトリの中身を列挙します.
Find初心者は,該当ディレクトリにCDしてから使うのがコツです.

find のオプション

find のオプションを知ってると捗る。そのままだと出力結果が多すぎて何も出来ない.そこでフィルタを書けて検索する

ディレクトリだけを一覧する
find -type d
空っぽディレクトリだけを一覧する
find -type d -empty
ファイルだけを一覧する
find -type f

php ファイルを一覧する

find -name '*.php'
css ファイルを一覧する
find -name '*.css'

大文字小文字を区別しない

  • -name の代わりに -iname を使う
find -iname september

日付条件

  • -daystartを付けると日付の深夜0時が日付基準なります
今日
find -daystart -mtime -1
一日前
find -daystart -mtime 1
二日前
find -daystart -mtime 2
7日以内
find -daystart -mtime -7
7日以上過ぎたもの
find -daystart -mtime +7

時間条件*1

数字(n) × 24 時間で考えます.数字は マイナス(-)が < で、プラス(+) が > です

72時間以上前全部
find -mtime +2
48時間前〜72時間未満
find -mtime 2
24時間前〜48時間未満
find -mtime 1
24時間以内
find -mtime -1
60分以内
find -mmin -60

ファイルの時間について

  • -atime … 最終アクセス時刻 (access time)
  • -mtime … 最終変更時刻 (modify time)
  • -ctime … 最終ステータス変更時刻 (change time)

パーミッション関連

所有者がtakuyaのファイルを一覧する
find -user takuya
パーミッションが777のヤバいファイルを一覧する
find -perm 777

階層でしばる

階層を3階層目までで止める

あまり深い階層までいくひつようもないとき

find -maxdepth 3

組み合わせて使います

所有者がTakuyaで最近1日で作ったphp ファイルを探す
find -user takuya -name '*.php' -daystart -mtime -1

見つかったファイルに処理をする

xargs と組み合わせて使います。xargsオススメです.-execよりわかりやすいです.*2

find -perm 777 | xargs -I@ sudo chmod 755 '@'

2017-08-02

ミススペルを 若干修正した。

*1:-mtime 1 を日付でなく時間と書いたのは,man に次のように書いてあるから 「ファイルが最後にアクセスされたのが n*24 時間前であれば真。」

*2:sudoとリダイレクトでチョッとクセあるけど