up

find の 練習 001

# find starting-dir(s) maching-criteria-and-actions

まあ 構成 というか 構文というようなもの

# find starting-dir(s) maching-criteria-and-actions

starting-dir(s) は 、find が ファイルの検索を開始する 一連のディレク トリです。デフォルトでは、find は、リストアップされたディ レクトリの下にあるすべてのディレクトリを検索します。その ため、開始ディレクトリに「 / 」を 指定すれば、ファイルシ ステム全体を検索します。

maching-criteria (合致基準)は、どのような種類のファイルを検索するの かをfind に指示します。

maching-criteria (合致基準)の オプション

オプション      意味
-atime n      ファイルが最後にアクセスされたのが ちょうど n 日前である。
-mtime n      ファイルが最後に修正されたのが ちょうど n 日前である。      
-newer file   ファイルは file より後に修正された。
-size n       ファイルの長さは n ブロック(1ブロックは 512 バイト)である
              (端数は次のブロックへ切り上げ)。
-type c       ファイルの種類を指定する。 f: プレーンファイル、
                          d: ディレクトリ など。
-fstype typ   ファイルシステムの名前を指定する。
-name nam     ファイルの 名前は nam である。
-perm  p      ファイルの アクセスモードは p である。
-usr usr      ファイルの 所有者は  usr である。
-group grp    ファイルの グループ所有者は  grp である。
-nouser       ファイルの所有者はパスワードファイルに記載されていない。
-nogroup      ファイルの グループ所有者はグループファイルに記載されていない。

find 追加オプション

プラス記号 「+」 より 多い

ハイフン 「-」 より 少ない

-mtime +7     最新アクセスは 7日以上前  (????)
-atime -2     最新アクセスは 2日以内   (こちらは 良い様ですが)
-size +100    サイズが 100ブロック (50K)より 大きい

ワイルドカード 使用;シングルクウォートで 囲む

-name '*.dat'       .dat で 終わる全てのファイル 

複数の条件

デフォルトでは AND で 結ばれる また「 -o 」で OR 条件を 表現する。

最後にアクセスされたのが 2ヶ月以上前

で (AND)

最後に修正されたのが 4ヶ月以上前の ファイル

-atime +60 -mtime +120

オプション 、 OR 結合 を 表す 「 -o 」で 表示可能。エスケープ記号付き の 「(」と 「)」で 以下のように 表現すると

 \(  なんらかの 表現    \)

グループ化をする事が可能

最新アクセスが 七日以上前であるか、または最終修正が 三十日以上前に遡 るファイルを指定します。

\( -atime +7 -o -mtime +30 \)

NOT を示すには 、感嘆符を用います (C シェルの場合はシングルクォートでくくる)

! -name gold.dat -name \*.dat 

gold.dat を 除く 全ての .dat ファイル 上記の ”ワイルドカード 使用;シ ングルクウォートで 囲む”の 部分の対応はどうなるのか 試してみないとわか りませんな

$ echo $SHELL
/bin/bash
$ find . ! -name 1001_file.html -name \*file.html 
./4006_sendmail/1001_install/1003_inst/1002_file.html
./4006_sendmail/1001_install/1003_inst/1003_file.html
./4006_sendmail/1001_install/1003_inst/1004_file.html
./4006_sendmail/1001_install/1003_inst/1005_file.html
./4006_sendmail/1001_install/1003_inst/1006_file.html
./4006_sendmail/1001_install/1003_inst/1007_file.html
./4006_sendmail/1001_install/1003_inst/1008_file.html
./4006_sendmail/1001_install/1003_inst/1009_file.html
./4006_sendmail/1001_install/1002_inst/1002_file.html
./4006_sendmail/1001_install/1002_inst/1003_file.html
./4006_sendmail/1001_install/1002_inst/1004_file.html
./4006_sendmail/1001_install/1002_inst/1005_file.html
./4006_sendmail/1001_install/1002_inst/1006_file.html

$ find . ! -name 1001_file.html -name '*file.html' 
./4006_sendmail/1001_install/1003_inst/1002_file.html
./4006_sendmail/1001_install/1003_inst/1003_file.html
./4006_sendmail/1001_install/1003_inst/1004_file.html
./4006_sendmail/1001_install/1003_inst/1005_file.html
./4006_sendmail/1001_install/1003_inst/1006_file.html
./4006_sendmail/1001_install/1003_inst/1007_file.html
./4006_sendmail/1001_install/1003_inst/1008_file.html
./4006_sendmail/1001_install/1003_inst/1009_file.html
./4006_sendmail/1001_install/1002_inst/1002_file.html
./4006_sendmail/1001_install/1002_inst/1003_file.html
./4006_sendmail/1001_install/1002_inst/1004_file.html
./4006_sendmail/1001_install/1002_inst/1005_file.html
./4006_sendmail/1001_install/1002_inst/1006_file.html

どちらでも 良いのでしょう、色々試行してゆくうちにはっきりするでしょう。

-perm オプションを使えば、特殊アクセスモード(数値形式)のファイルを 検索できる。

数値に何も着いていない場合は、パーミッション設定に合致するファイルを 指定

数値の前にハイフンが有る場合は、少なくとも指定アクセスモードを示すファ イルを検索::実例を見た方が 良いのか?

-perm 755         パーミッション: rwxr-xr-x
-perm -002        誰でも書き込み可能なファイル
-perm -4000       setuid アクセスが設定されている
-perm -2000       setgid アクセスが設定されている

へい まだまだ続く

にゃんたろう 拝!

2007年11月26日 (月) 21:11:42 JST 作成


up

Copyright © 2004.-2007. nyantarou All Rights Reserved.