ファイル検索を見つけます

ファイルシステム上の適格ファイルを検索

探し:システムは、データベースを手動で更新する場合、事前に構築されたインデックスに依存する、インデックス構造は、(updatedbを)比較的アイドル自動(周期的タスク)であります 

  • 非リアルタイムを探します

  • あいまい参照
  • インデックスの構築プロセスは、全体のルートファイルシステム、資源の極端な消費を横断する必要があります

詳細を見つけます

リアルタイムファインダー、完全なファイルの検索を指定したパスを歩いて開始時にファイルシステム階層 ;あなたは、ファイル名、ファイルの種類などによって、一致条件の数を指定することができますが、ユーザーがさえ、ファイルのタイムスタンプを見つけることができます。これは、次の特性があります。

  • 少し遅く検索
  • 完全に一致
  • リアルタイム検索
  • あなただけの読み取りを持つユーザーを検索し、ディレクトリへのアクセス権を実行することができます。
検索 [-H] [-L] [-P] [debugopts -D] [ - Olevel] [パスが...] [式はザ・]
 検索  [OPTION] ... [検索パス] [検索条件] [処理動作]
#検索パス:パス指定されたターゲット、カレントディレクトリがデフォルト
#検索条件:指定した検索条件は、ように、標準のファイル名、サイズ、種類、権限とすることができ、デフォルトは指定したパス内のすべてのファイルを見つけることです
#アクション:条件ファイル、画面にデフォルトの出力を満たす操作を行います
例えば:
検索の/ var -userルート-a -groupメール- LS   #表現同時にメイングループの下のvarディレクトリがrootのメールファイルである/検索、およびLLアウト

 

1.共通オプション

1.1 -nameは、ファイル名を探し-iname

  -name "文件名称"  文件名称严格区分大小写
  -iname
"文件名称" 文件名不区分大小写

find /etc -iname "a[mmp]*.conf" #表示在/etc目录下和寻找以a开头,第二个字符为m/n/p,同时以.conf结尾的文件; -regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而不仅仅是文件名称

レビューファイルグロブワイルドカード:

  • *:パス部分がゼロ以上の文字に一致し、パスが.Aとしてファイルの先頭と一致しないことに注意してください。
  • ?:任意の1文字に一致します
  • [abc]は:ABCのリストに任意の文字に一致します
  • [^ abc]は:リストABCの外の任意の文字に一致します
  • [0-9]:一致する数字範囲

1.2 -user、-group、-uid、-gid、-nouser、-nogroup所属に基づいてファイルを検索します

  - ユーザーUSERID:指定されたユーザーファイルの所有者を探す;
  
  - グループGROUPID:ファイルがグループに属して見つけます。
  - UID UID:指定されたファイルのUID番号の所有者を探す
  
- GID GID:検索は、指定されたファイルのGID番号のグループです
  
- NOUSER:ファイルはありません所有者を探す
  
-nogroup:ファイルがグループに属していない検索します
find  /data -user root  -ls
find /data -gid 1001 
find /data \(-nouser  -o -nogroup \) -ls

属主不是root,且文件名不是fstab的文件
find /tmp \(-not -user "root" -a -not -name "/fstab"\) -ls
find  /tmp -not \(-user "root" -o  -name "/fstab"\) -ls

1.3条件の組み合わせ

  • そして:-a
  • または:-o
  • 非:-notか!

拡張子:
ド・モルガンの法則:
(非A)または(非B)=無(AとB)
非A)と(非B)=無(AまたはB)
例:
!!! -A B = A( -o B A)
!!B を-o =!(Bの-a)




1.4 型は、ファイルタイプを見つけます

find /etc  -type f   -name  "passwd"   #查找/etc下名字为passwd的普通文件
#タイプ:
    F:通常のファイル
    D:ディレクトリファイル
    L:シンボリックリンク(ソフトリンク)ファイル
    B:ブロックデバイスファイル
    C:キャラクタデバイスファイル
    P:パイプファイル
    S:ソケットファイル
 

1.5 ファイルのサイズに基づいて検索-size

-size [+ | - ] #UNIT
    共通単位:K、M、G、C(バイト #UNIT:(#-1、#]   -unit:[0、#-1]   + UNIT:(#、∞) 

 

検索 データ/ - サイズが発現6K位(。 。5K、6K] 5Kよりも大きいか小さい6K 検索 /データ-size - 。6K#は5K]、0K(表し 検索 データ/ + -size 。6K位より大きいか小さい)∞、6K(表し5K 6Kは。 検索 -size +する。#で1000000cをカレントディレクトリの長さのファイルを検索するファイルが1つのより大きいMバイトで 検索 /ホーム/ apacheの-size 100cの#はちょうど100バイトのファイルのホーム/ apacheのディレクトリの長さ/下のファイルを見つける

の/ var -size -3k -exec lsと見つけます- LH {} \

1.6 -atime、ctimeを、ファイルのmtime; - アミン、-cmin、時間を見つけ-mmin

単位として「日」:

  • -atime [+ | - ]#
    • #:[#、#+ 1)5日間
    • - #:5日以内に[0、#)
    • +#:[#+ 1、∞] 5日前
  • -mtime [+ | - ]#
  • -ctime [+ | - ]#
    ***
    ユニットのための"分":
  • -にいる
  • -mmin
  • -cmin

1.7 -maxdepth、ファイルレベルの外観によって-mindepth

-maxdepthレベル最大深さ検索ディレクトリ、1レベルにディレクトリを指定
-mindepthレベル最小深さ検索ディレクトリを

1.8 ファイルのパーミッションによって-perm検索

-perm  [/|-]mode  注:findutils-4.5.12 以后使用 -perm /mode 取代了“+”
    mode:精确权限匹配;
    +mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;
    -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;

0 表示不关心
示例: find . -perm /220 find . -perm /u+w,g+w find . -perm /u=w,g=w 以上的3个都表示:查找满足:1属主拥有w权限;组拥有w权限;其他人无任何权限。这个3个条件满足其一 find . -perm -444 -perm /222 ! -perm /111 find . -perm -a+r -perm /a+w ! -perm /a+x 以上两个都表示:全部用户都有r权限,全部用户都没有x权限,至少一类用户拥有w权限

 

2.アクション:

  • -print:デフォルトの処理操作、画面に表示
  • -ls:ファイルを見つけるための「ls -l」コマンドのように実行します
  • -delete:見つかったファイルを削除します。
  • -flsファイル:指定したファイルにすべてのファイルを見つけるために、長い形式の情報を保存します
  • COMMAND} {-OK \;   :各ファイルを見つけるために、指定されたコマンドのコマンドによって行わ
    •   コマンドを実行する前に、各ファイルに対して対話を確認するように求められます
  • COMMAND} {-exec \; 実行コマンドコマンドで指定された各ファイルを見つけるために、 \:固体とExecコマンドのフォーマット
    **注意:{} 用于引用查找到的文件名称自身** ;

find /tmp -iname ".conf" -ok rm -rf {} \ find /etc -perm -111 -exec -mv {} /data \ find ~ -perm -002 -exec chmod o-w {} \ #

3.findとxargsの

1、ファイルへのfindコマンドを使用してマッチング処理の-execオプションは、すべてのファイルに一致するコマンドを見つけるのワンタイム実行をexecしするパスをしかし、いくつかのシステムは、コマンドの長さに制限は幹部に伝達することができているので、findコマンドの後に数分を実行するために、オーバーフローエラーが発生します。エラーメッセージは、「引数リストが長すぎる」または通常「パラメータ列のオーバーフロー。」

xargsのコマンドをここには、findコマンドと組み合わせる場合は特に便利です。
以下のような:find /sbin -perm /700 | ls -lこのコマンドは、過度に結果が実行できない見つけ押収さ
:正しくfind /sbin -perm +700 | xargs ls -l


2、コマンドを生成するためのパラメータをxargsのは、データが標準入力xargsのを読むことができ、スペースまたはキャリッジリターン文字データパーティションは、標準入力の引数になります。これは、xargsのにコマンドファイルに渡すfindコマンドをマッチした、とxargsのは、それぞれのファイルの一部だけを取得するコマンドを、すべてではない、として-execないオプションだから、それは最初に取得したファイルの最初の部分に対処し、次のバッチ、およびので続けることができます。

示例:
find -name “*.conf” -exec cp {} {}.orig \;   # 备份配置文件,添加.orig这个扩展名

find /tmp -ctime +3 -user joe -ok rm {} \   
find /tmo -ctime +3 -user joe | xargs rm -rf   # 删除存在时间超过3天以上的joe的临时文件

find ~ -perm -002 -exec chmod o-w {} \;
find ~ -perm -002 | xargs chmod o-w  #家目录中寻找其他用户只有写权限的文件并将该权限去掉

注意:find -name “*.conf” -exec cp {} {}.orig \; 最後に、忘れてはいけない。最後には、フロントと単語の間にスペースを残して

注2:ダクト| -execとの差を、パイプラインは、入力として、右側の出力に残され、そして-exceは-exceによってファイル操作コマンドを見つける再び見つけるために実行されます。

find -name  "file*" -exec  wc -w  {}  \;   # 对搜到的每一个文件进行wc命令操作
find -name "file*" | wc -w     # 而管道符是将find搜到的作为一个文本整体进行wc操作,也可以得到正常的结果

検索する4.locate非リアルタイム(データベース検索)

見つける-名前でファイルを見つける
[OPTION] ...パターンを見つけ...

クエリシステム事前に構築されたインデックスファイルデータベース:/var/lib/mlocate/mlocate.db
システムが比較的アイドル状態のときに事前に構築されたインデックスに依存して、インデックスが構築されるには、(周期的タスク)自動的に、管理者が手動で(データベースを更新しますupdatedbの)
インデックスの構築プロセスは、全体のルートファイルシステム、資源の極端な消費を横断する必要があります

特徴:

  • 高速検索
  • あいまい参照
  • 非リアルタイムを探します
  • 検索は、ファイルだけでなく、ファイル名のフルパスです
  • あなただけの読み取りを持つユーザーを検索し、ディレクトリへのアクセス権を実行することができます。
locate [OPTION]... PATTERN...
# option
    -i 不区分大小写的搜索
    -n N 只列举前N个匹配项目
    -r 使用正则表达式
示例:
locate conf   # 搜索名称或路径中带有“conf”的文件
locate -r ‘\.conf$’  # 使用Regex来搜索以“.conf”结尾的文件

5.演習:

1.メインルートに/ varディレクトリ配下を検索し、メールのすべてのファイルやディレクトリのグループに属し、
   メールは-aルートを-ls -group検索の/ var -user

2. /すべてのファイルやディレクトリがroot、ビンまたはusrディレクトリのHadoopの下にない検索、二つの方法;
   検索は/ usr -not -userルートビン-a -a -not -user -not -user Hadoopの
   検索は/ usr -not(-userルート-o -o -userビン -user Hadoopの)-ls

3.検索最後の一週間で/ etcディレクトリの内容が変更され、所有者がルートでもHadoopのユーザーのファイルまたはディレクトリではありません。
  検索は/ etc -mtime -7 -a -not(-userルート-userのHadoopの-o )-ls
  検索は/ etc -mtime -7 -not -userルートのHadoop -ls -a -a -not -user

4、現在のシステム上のファイルまたはディレクトリが属またはグループに属していない、と先週が訪問された見つける;
   検索/(-nouser -o -nogroup)-7 -ls -atime

5、1Mより大きい/見つけ、すべての通常のファイルのetcディレクトリのファイルを入力し、
  検索の/ etc -size 1M +型-exec LS -LH {F};

6.検索すべてのユーザーの/ etcディレクトリのファイルへの書き込みアクセス権を持っていない。(反:少なくとも1人のユーザが書き込み権限を持つ)
  検索は/ etc -not -perm / 222型のF -ls

7.検索/ etcディレクトリには、少なくとも実行する権限を持たないユーザーのクラスファイルしている;(抗セット:すべてのユーザーが実行権限を持っている)
   -ls F検索は/ etc -not -perm -111型

8.すべてのユーザーが実行権限を持っている、と他のユーザーが書き込みアクセス権を持っているすべてのファイル、/etc/init.d/のディレクトリを検索し、
  検索の/ etc -perm -113型のF -ls

おすすめ

転載: www.cnblogs.com/liuzhiyun/p/11330445.html