shell------findコマンド

3324 ワード


実は最近ずっと暇がなくて、学校のハードウェアの授業は比較的に葛藤して、だから人を学ぶのがとても気持ち悪いです.でも暇になったら多少書くことにします
findのコマンド---linuxの次の有効なツールとして、現在のディレクトリやファイルシステム全体を巡っていくつかのファイルを検索することができますが、非常にリソースを消費しています.遍歴したファイルシステムが大きい場合は、バックグラウンドで実行することができます.
  • findコマンドの基本フォーマット
  •                     find pathname -options [-print -exec -ok]
                            1.pathname-----パス名
                            2.-print---findコマンドマッチするファイルを標準出力に出力
                            3.-exec---findコマンド一致するファイルに対してこのパラメータが与えるshellコマンドを実行
                                    -exec  COMMAND  { } \;--------{}findがマッチングした内容を表す
                            4.-OKと-execの役割は同じです
  • findのコマンドオプション-nameファイル名で検索
    [root@server37 ~]# find /mnt/shell -name *.sh
    /mnt/shell/sum.sh
    /mnt/shell/User_check.sh
    /mnt/shell/check_blank.sh
    /mnt/shell/mage/check_disk.sh
    /mnt/shell/mage/cpcommand.sh
    /mnt/shell/mage/test_shift.sh
    /mnt/shell/mage/networkcheck.sh
    -permファイル権限で検索
    [root@server37 ~]# find /etc -perm 640
    /etc/logrotate.d/named
    /etc/sysconfig/auditd
    /etc/audisp/audispd.conf
    /etc/audisp/plugins.d/af_unix.conf
    /etc/audisp/plugins.d/syslog.conf
    /etc/libaudit.conf
    /etc/rndc.key
    /etc/audit/auditd.conf
    /etc/audit/audit.rules
    /etc/named.conf
    /etc/named.rfc1912.zones
    -iname filename正確なファイル検索---大文字と小文字を区別しない
    [root@server37 ~]# find /mnt/shell -name add2.sh
    /mnt/shell/play/add2.sh
  • -pruneディレクトリ検索を無視
  • -user Username所有者による検索---同じ理屈で-group groupname所有者による検索
    [root@server37 ~]# find /mnt/shell -name *.sh "/mnt/shell/mage/" -prune -o -print
    /mnt/shell
    /mnt/shell/sum.sh
    /mnt/shell/fstab
    /mnt/shell/grep.txt
    /mnt/shell/User_check.sh
    /mnt/shell/user.txt
    /mnt/shell/functions
    /mnt/shell/history.txt
    -
    [root@server37 ~]# find / -user named
    /var/named/dynamic
    /var/named/dynamic/managed-keys.bind.jnl
    /var/named/dynamic/managed-keys.bind
    /var/named/chroot/var/run/named
    /var/named/chroot/var/log
    /var/named/chroot/var/tmp
    /var/named/data
    -not-user所有者でないファイルを検索---同じ理屈で-not-group所有者でない文書
  • .
    -gidと-uidはファイルのgidとuidに従って検索されます.
    -nogroupと-nouser有効なグループの有効なユーザーがいないファイルを検索
  • findのファイルプロパティ検索
  • -typebブロックデバイスdディレクトリc文字デバイスファイル

  • pパイプファイル
    lシンボルリンクファイル
    f一般ファイル
    -sizeファイル長nブロックのファイルを検索
    [root@server37 ~]# find /mnt -size 100
    /mnt/httpd-2.2.26/modules/aaa/mod_authnz_ldap.c
    /mnt/httpd-2.2.26/modules/experimental/mod_example.c

            
    変更時間が5日以内のファイルを検索
    もちろん時間の検索は
           -atime
           -ctime
    この3つのタイムスタンプオプションはtouchに表示されているタイムスタンプに従って表示されます
    find / -mtime -5 -print
    /sys/module/nf_conntrack/sections/__ksymtab_gpl
    /sys/module/nf_conntrack/sections/__kcrctab_gpl
    /sys/module/nf_conntrack/sections/__param
    /sys/module/nf_conntrack/sections/__ksymtab_strings
    /sys/module/nf_conntrack/sections/__mcount_loc

     
     
    -execと言えば、個人的にはとても使いやすい命令だと思います.もちろん-okとxargsは彼と同じ機能を持っています.
    今日はexecの良い例を見て共有しましょう
     
     
    あるディレクトリの下のファイルを見てshの終わりを例にしましょう.検索した各ファイルの最初の行をnewファイルに入れましょう.
    find /mnt/ -name *sh -type f  -exec head -1 {} >/tmp/new \;

    このコマンドは私に-execというコマンドが本当に使いやすいことを体得させて、{}内で得たのは1つのキューで、1組のデータで、-exec処理を通じて、1行の処理で、これは循環しないで1つのキューの中で処理することができます
     
    本文は“永遠に果てしない”ブログから出て、転載して作者と連絡してください!