LinuxのFindコマンドの詳細

7130 ワード

Linuxシステム「ファイル検索」


Linuxシステムのファイルの中でよく使う属性は以下の内容です:名前、大きさ、権限、所有者、グループに属して、修正時間、アクセス時間など、巨大なシステムの中で、promptの中でファイルを検索する必要があって、その検索ツールを借りて実現する必要があって、これによって同じあるいは指定の属性のファイルを検索することができて、CentosとEHLE類のシステムは検索ツールを実現します:Locate、findツールがあります.

locateツール

`locate` 
    synopsis: locate [option]…PATTERN….
    options:
        -b --basename:         
        -c --count:          
        -r --regexp:           

locateの動作特性:


利点####

  • クエリーは高速で、インデックステーブルクエリーに基づいて、インデックステーブル時にシステム計画または手動でupdatedbコマンドを使用して
  • を確立します.
  • システムリソースを占有しない
  • 欠点####

  • 非リアルタイムクエリ
  • ファジイクエリ
  • クエリの名前一致パス名
  • インデックステーブルは、非常に消費されるシステムリソースを確立する
  • findツール


    一、仕事の特徴


    利点####

  • リアルタイム検索
  • 正確に検索して、ディレクトリ全体の下のすべてのファイル
  • を遍歴します.
  • は、検索するファイルに対して、表示、削除、移動などの操作を指定することができる.

  • 欠点####

  • クエリーの速度がやや遅い
  • findコマンドの使用方法

    `find` - search for files in a directory hierarhy
        sysnopsis: find [-H] [-L] [-P] [-D debugopts] [-Olevel] [path...] [expression]
    

    クエリー条件


    クエリー条件は、オプションとテスト条件で構成されます.
    【試験条件】
    一、ファイル名で検索
  • -name pattern:ファイル名で検索
  • -iname pattern:ファイル名の大文字と小文字を区別せず、globスタイルのみをサポートする検索方法:*,?[],[^]
  • -regex pattern:正規表現に基づいてファイルを検索し、ファイル名
  • に正確に一致する.
    二、ファイル従属関係で検索
  • -user USERNAME:ユーザー名で
  • を検索
  • -group GROUPNAME:グループ名で検索
  • -uid UID:UID番号で
  • を検索
  • -gid GID:GIDで
  • を検索
  • -nouser:所有者のないファイルを検索
  • -nogroup:グループに属していないファイルを検索
  • 三、ファイルタイプで検索
  • -type TYPE:ファイルタイプで検索
  • f:一般ファイル
  • d:ディレクトリファイル
  • b:ブロックデバイスファイル
  • c:文字デバイスファイル
  • l:接続ファイル
  • s:ソケットファイル
  • p:パイプファイル

  • 四、ファイルサイズによって検索
  • -size [+|-]SIZE:K,M,Gを含むファイルサイズでクエリー
  • -size 5M:サイズ5 Mのファイルを正確に検索し、サイズの上に少しずれがある
  • -size -5M:クエリーサイズが5 M未満のファイル
  • -size +5M:クエリーサイズが5 Mより大きいファイル

  • 五、時間によって検索する
  • -atime [+|-]TIME:アクセス時間(日)で
  • を検索
  • -mtime [+|-]TIME:データ修正時間(日)で
  • を検索
  • -ctime [+|-]TIME:メタデータ修正時間(日)で
  • を検索
  • -amin [+|-]TIME:アクセス時間(分)で
  • を検索
  • -mmin [+|-]TIME:データ修正時間(分)で
  • を検索
  • -cmin [+|-]TIME:メタデータ修正時間(分)で
  • を検索
  • -newer FILE:FILEファイルを条件に、それより新しいファイルを判断する
  • 7:正確な時間、7はちょうど7(日|分)の開始位置
  • を示す.
  • +7:7(日|分)以前の
  • -7:7(日|分)以内の

  • 六、権限による検索
  • -perm MODE:正確な権限検索
  • find . -perm 644

  • -perm /MODE:任意のクラスのユーザ(u,g,o)のいずれか(r,w,x)が条件を満たすか、または関係として理解されるか
  • find . -perm /222:少なくとも1つのクラスのユーザーが書き込み権限を持っていることを検索
  • .
  • find . -perm /666:少なくとも1つのクラスのユーザーが読み書き権限を持っていることを検索
  • .
  • find . -perm /001:他のユーザを検索する実行権限
  • -perm -MODE:各クラスのユーザ(u,g,o)の権限のうちの各ビット(r,w,x)は、条件を満たしながら満たされ、関係と理解される
  • find . -perm -222:3種類のユーザーを検索するには、書き込み権限
  • があります.
  • find . -not -perm -222:少なくとも1つのユーザが書き込み権限を持たない
  • .

    七、組合せ条件テスト
  • : -a
  • デフォルトの組合せロジックは、-aを追加してもよいし、キャンセルしてもよい.例:find . -type f -a -user mariadb、2つの条件は同時に
  • を満たす.
  • : -o
  • -oのパラメータを加えることができ、例:find . -type f -o -nouser、2つの条件は1つだけを満たす
  • である.
  • :-notまたは!で表される
  • find . -not -type f、一般ファイル
  • ではありません
  • find . ! -type f、同

  • 八、処理動作
  • -print:デフォルトは印刷であり、追加する必要はなく、画面
  • に出力する.
  • -ls:ls長ファイル形式で
  • を出力する.
  • -delete:検索されたファイルを削除
  • -fls /PATH/TO/SOMEFILE:問い合わせたファイルをls詳細形式でSOMEFILEファイルに
  • 保存する
  • -ok COMMAND {} \;:検出されたファイルはCOMMANDコマンドに渡され、ステップ毎にユーザに確認操作
  • を提示する.
  • -exec COMMAND {} \;:見つかったファイルはCOMMANDコマンドに渡され、直接修正が完了し、ユーザーに
  • を確認しない.
    注意:findは検索したファイルパスを一度に後のコマンドに渡しますが、長すぎるパラメータを受け入れられないコマンドが多く、コマンドの実行に失敗しました.このエラーを回避するには、次の方法を使用します.find /etc -type f | xargs -i COMMAND:-iパラメータはfindの結果からxargsコマンドに渡された後、-iによって結果置換子が指定されます
        find /etc -type f | xargs -i cp {} /tmp : -i       {}
    

    オプション


    一、検索ディレクトリ範囲の指定
  • -maxdepth NUM:最大検索ディレクトリレベルをNUMレベル
  • に指定する.
  • -mindepth NUM:最小検索ディレクトリNUMレベル
  • を指定
    二、空のファイルを検索する
  • -empty:クエリの内容が空のファイル
  • find ./ -empty:現在のディレクトリの下にあるすべての空のファイルを検索

  • 三、シンボル接続を排除する
  • -follow:シンボル接続を除外
  • Findはxagrsのコマンドと結合する


    Usage:

    find /etc -type f | xargs -i cp {} /tmp/
    
        -i :  xargs     , -i        {}  
    

    ==============
  • /tmpディレクトリの部下がrootではなく、ファイル名がfstab文字列を含むファイルを見つけます.
  • find /tmp -not -user root -a -name *fstab*

  • /tmpディレクトリの下のファイル名にfstab文字列が含まれていないファイルを見つけます.
  • find /tmp -not -name *fstab*

  • /tmpディレクトリの部下がrootではなく、ファイル名にfstab文字列が含まれていないファイルを見つけます.
  • find /tmp -not -user root -a -not -name *fstab*
  • find /tmp -not \(-user root -o -name *fstab*\)

  • 少なくとも1週間アクセスしていないファイル
  • find /etc -atime +7 -ls

  • 24時間以内に修正されたファイル
  • find /etc -mtime -1 -ls

  • 検索/varディレクトリの部下はrootであり、グループはmailのすべてのファイルまたはディレクトリです.
  • find /var/ -user root -group mail

  • /usrディレクトリの下でroot,bin,またはhadoopに属さないすべてのファイルまたはディレクトリを検索するには、2つの方法があります.
  • find ./ -not -user bin -not -user user3 -not -user user4
  • find ./ -not \( -user bin -o -user user3 -o -user user4 \)

  • 検索/etcディレクトリの次の1週間で内容が変更され、所有者がrootユーザーでもhadoopユーザーでもないファイルまたはディレクトリ
  • find /etc -mtime -7 -not -user root -not -user hadoop

  • 現在のシステムにプライマリまたはグループに属しておらず、最近1週間以内にアクセスしたファイルまたはディレクトリを検索します.
  • find / -atime -7 -nouser -o -nogroup

  • 検索/etcディレクトリの下で1 Mより大きく、タイプが通常のファイルのすべてのファイルを検索
  • find /etc/ -size +1M -type f -ls

  • /etcディレクトリの下のすべてのユーザーが書き込み権限を持っていないファイルを検索
  • find /etc/ -type f -not -perm /222 -ls

  • /etcディレクトリの少なくとも1つのユーザが実行権限を持たないファイルを検索する
  • find /etc/ -not -perm -111 -ls

  • 検索/etc/init.dディレクトリの下には、すべてのユーザに実行権限があり、他のユーザに書き込み権限があるすべてのファイル
  • find /etc/ -perm -111 -perm -002
  • find /etc/ -perm -113


  • モーガンの法則:


    ** !A -a !B = !(A -o B)**
    ** !A -o !B = !(A -a B)**