RHEL 7ファイル検索


本文はRHEL 7の下でwhich、whereis、locate、findコマンドの使用を紹介し、findコマンドの使用を重点的に紹介する.
which
コマンド:which作用:コマンドを検索する実行ファイルパス構文:which[オプション][--]名...説明:whichコマンドは比較的簡単で、彼のオプションはよく使われません
[root@localhost ~]# which -- nginx
/usr/bin/which: no nginx in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/
sbin:/usr/bin:/usr/local/java/jdk1.7.0_79/bin:/usr/local/mysql/bin:/root/bin)
[root@localhost ~]# which nginx cat passwd
/usr/bin/which: no nginx in (/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/
sbin:/usr/bin:/usr/local/java/jdk1.7.0_79/bin:/usr/local/mysql/bin:/root/bin)
/bin/cat
/usr/bin/passwd

whereis
コマンド:whereisの役割:実行可能ファイル、ソースファイル、ファイルシステムにおけるヘルプファイルの位置構文:whereis[-bmsu][BMSディレクトリ名-f]ファイル名
オプション
説明
-b
実行可能ファイルの配置
-m
ヘルプファイルの配置
-s
ソースファイルの配置
-u
実行可能ファイル、ソースファイル、ヘルプファイル以外のファイルを検索
-B
実行可能ファイルを検索するパスを指定します
-M
ヘルプファイルの検索パスの指定
-S
ソースファイルの検索パスの指定
-f
M-Sまたは-Bオプション検索の終了信号
[root@localhost ~]# whereis tomcat
tomcat: /usr/local/tomcat

locate
locateは、ユーザーがファイルシステム内に指定されたファイルがあるかどうかを迅速に検索できるようにします.その方法は、システム内のすべてのファイル名とパスを含むデータベースを構築した後、検索時にこのデータベースをクエリーするだけで、実際にファイルシステムに深く入り込む必要はありません.
コマンド:locateの役割:インデックス・データベースによるファイルの検索構文:locate[オプション]...[ATTERN]...
オプション
説明
-b
パス名の基本名のみ一致
-c
クエリー結果の合計のみ印刷
-e
既存のファイルのみをクエリー
-L
シンボルリンクファイルを検索するときにリンクされたターゲットファイルを追跡
-i
大文字と小文字の検索を無視
-l
クエリー出力の結果数を制限し、数量に追随する必要があります.
-P
リンクファイルを追跡せず、-Lとは反対
-0
出力の結果を区切らない
-S
データベースの統計を印刷します.このオプションは他のオプションとは使用できません.
-q
データベースが読み込まれていないエラーメッセージをレポート
-r
正規表現モードで一致
-w
パス検索全体を一致させる(デフォルトではこのオプションを使用します)
[root@localhost ~]# locate /etc/passwd
/etc/passwd
/etc/passwd-

locateを使用してクエリーができない場合は、コマンドupdatedbを使用してmlocateデータベースを更新します.
[root@localhost ~]# touch abcd123456dcba.txt
[root@localhost ~]# locate abcd123456dcba.txt
[root@localhost ~]# updatedb
[root@localhost ~]# locate abcd123456dcba.txt
/root/abcd123456dcba.txt

find
findコマンドはディレクトリ構造でファイルを検索し、指定した操作を実行するfindコマンドでかなりの検索条件を提供し、強力な機能を備えています.
コマンド:findアクション:構文:find[オプション][パス...[式]説明:
  • デフォルトのパスは、現在のディレクトリ
  • デフォルトの式は-print
  • 式は、operators,options,tests,actions
  • を含む.
    operatorsは論理演算子で、デフォルトはandで、優先順位は:(式),!式、-not式、式1-a式2、式1-and式2、式1-o式2、式1-or式2、式1、式2優先度:かっこ>!>-not>-a>-and>-o>-or複数の式をカンマで区切る前の優先度が後のものより高い
    Actionsは動作で、デフォルトは-printです.以下は一般的な動作です.-delete-print 0-printf FORMAT-fprintf FILE FORMAT-print-fprint 0 FILE-fprint FILE-ls-fls FILE-prune-quit-exec COMMAND-exec COMMAND{}+-ok COMMAND-execdir COMMAND-execdir COMMAND-execdir COMMAND{}+-okdir COMMAND
    findコマンドの式は非常に多く、以下では一般的ないくつかだけを紹介します.
    式#シキ#
    説明
    -print
    一致するファイルを標準出力に出力
    -name
    ファイル名でファイルを検索
    -perm
    ファイル権限に従ってファイルを検索
    -prune
    このオプションを使用すると、findコマンドが現在指定されているディレクトリで検索されないようにします.すなわち、-depthオプションを同時に使用すると、-pruneはfindコマンドで無視されます.
    -depth
    ファイルを検索するときは、まず現在のディレクトリのファイルを検索してからサブディレクトリで検索します.
    -user
    ファイルの所有者に従ってファイルを検索
    -nouser
    有効な所有者がいないファイルを検索します.すなわち、ファイルの所有者は/etc/passwdに存在しません.
    -group
    ファイルが属するグループに従ってファイルを検索
    -nogroup
    有効なグループがないファイルを検索します.つまり、ファイルが属するグループは/etc/groupsに存在しません.
    -mtime -n/+n
    ファイルの変更時間に従ってファイルを検索-nはファイルの変更時間が現在のn日以内+nはファイルの変更時間が現在のn日以前であることを示す
    -type
    ある種類のファイルbブロックデバイスファイルdディレクトリc文字デバイスファイルpパイプファイルlシンボルリンクファイルf一般ファイルを検索する
    -size n [c]
    検索ファイル長nブロックのファイルcが付いている場合はファイル長がバイトであることを示す
    -fstype
    通常、プロファイル/etc/fstabにこのシステムのファイルシステムに関する情報が含まれているプロファイルのタイプを検索します.
    -mount
    ファイルを検索するときにファイルシステムmountポイントを越えない
    -follow
    findコマンドがシンボルリンクファイルに遭遇した場合、リンクが指すファイルに追跡されます.
    名前で検索
    -nameオプションはfindコマンドで最も一般的なオプションです.単独で使用するか、他のオプションと一緒に使用します.
    注意:あるファイル名モードを使用してファイルを一致させることができます.引用符でファイル名モードを引き起こすことを覚えておいてください.
    現在のパスが何であれ、自分のルートディレクトリ$HOMEでファイル名が*.txtに一致するファイルを検索するには~を「pathname」パラメータとして使用します.波形番号~はあなたの$HOMEディレクトリを表します.
    [root@VM_200_13_centos ~]# touch tokyohot.txt
    [root@VM_200_13_centos ~]# find ~ -name "*.txt"
    /root/tokyohot.txt
    [root@VM_200_13_centos ~]# cd /
    [root@VM_200_13_centos /]# find ~ -name "*.txt"
    /root/tokyohot.txt

    現在のディレクトリおよびサブディレクトリですべての*.txtファイルを検索
    [root@VM_200_13_centos firmware]# find . -name "*.txt" -print
    ./ar3k/1020201/RamPatch.txt
    ./ar3k/30101/RamPatch.txt
    ./ar3k/30101coex/RamPatch.txt
    ./ar3k/1020200/RamPatch.txt
    ./ar3k/30000/RamPatch.txt
    ./qca/NOTICE.txt
    ./ath10k/QCA988X/hw2.0/notice_ath10k_firmware-4.txt
    ./TDA7706_OM_v3.0.2_boot.txt
    ./TDA7706_OM_v2.5.1_boot.txt

    /etcディレクトリでファイル名hostで始まるファイルを検索するには
    [root@VM_200_13_centos firmware]# find /etc -name "host*"    
    /etc/selinux/targeted/modules/active/modules/hostname.pp
    /etc/host.conf
    /etc/hosts
    /etc/hosts.deny
    /etc/hostname
    /etc/hosts.allow

    権限による検索
    ファイル権限モードでファイルを検索すると.3桁の10進数の権限表現を使用することが望ましい
    現在のディレクトリの下でファイル権限ビット755のファイルを検索すると、所有者が読み取り、書き込み、実行でき、他のユーザーが読み取り、実行できるファイルです.
    [root@VM_200_13_centos ~]# find -perm 755       
    [root@VM_200_13_centos ~]# ll
    total 0
    -rw-r--r-- 1 root root 0 Aug 17 00:47 tokyohot.txt
    [root@VM_200_13_centos ~]# chmod 755 tokyohot.txt
    [root@VM_200_13_centos ~]# find -perm 755
    ./tokyohot.txt

    ディレクトリを無視
    -pruneオプションを使用して、無視するディレクトリを指定します.
    このオプションを使用するときに-depthオプションを同時に使用すると、-pruneオプションはfindコマンドによって/appsディレクトリの下でファイルを検索されませんが、/apps/binディレクトリの下で検索されません.
    [root@VM_200_13_centos ~]# find /apps -path "/apps/bin" -prune -o -print
    /apps
    /apps/d
    /apps/c

    サブディレクトリの検索
    現在のすべてのファイルを一致させてから、サブディレクトリで次の例を検索する場合、findコマンドはファイルシステムのルートディレクトリから始まり、CON.FILEというファイルを検索します.まずすべてのファイルを一致させてからサブディレクトリで検索します.
    [root@VM_200_13_centos ~]# find / -depth -name "CON.FILE"  -print
    /CON.FILE

    所有者別検索
    $HOMEディレクトリでrootのファイルを検索するなど、ファイルの所有者別にファイルを検索します.
    [root@VM_200_13_centos ~]# find -user root  -print
    .
    ./a
    ./.bash_history
    ./.ssh
    ./.ssh/authorized_keys
    ./tokyohot.txt
    ./.bashrc
    ./.cshrc
    ./.bash_logout
    ./.tcshrc
    ./.bash_profile

    所有者勘定科目が削除されたファイルを検索するには、-nouserオプションを使用します.これにより、/etc/passwdファイルに有効な勘定科目がないファイルを見つけることができます.-nouserオプションを使用する場合、ユーザー名を指定する必要はありません.findコマンドはあなたのために相応の仕事を完成することができます
    root@VM_200_13_centos ~]# find /etc/ -nouser

    グループ別検索
    userとnouserオプションのように、findコマンドもファイルが属するユーザーグループに対して同じオプションを有します.
    [root@VM_200_13_centos ~]# find -group root -print
    .
    ./a
    ./.bash_history
    ./.ssh
    ./.ssh/authorized_keys
    ./tokyohot.txt
    ./.bashrc
    ./.cshrc
    ./.bash_logout
    ./.tcshrc
    ./.bash_profile
    ./.history
    ./.viminfo

    有効なユーザー・グループがないすべてのファイルを検索するには、nogroupオプションを使用します.
    [root@VM_200_13_centos ~]# groupadd xxx
    [root@VM_200_13_centos ~]# touch xx.txt
    [root@VM_200_13_centos ~]# chown :xxx xx.txt
    [root@VM_200_13_centos ~]# ll xx.txt
    -rw-r--r-- 1 root xxx 0 Aug 17 01:21 xx.txt
    [root@VM_200_13_centos ~]# find -group xxx
    ./xx.txt
    [root@VM_200_13_centos ~]# groupdel xxx
    [root@VM_200_13_centos ~]# find -nogroup    
    ./xx.txt

    時間単位で検索
    変更時間に従ってファイルを検索する場合は、mtime、atime、ctimeオプションを使用します.
    システムに突然空き容量がなくなった場合、あるファイルの長さがこの間に急速に増加する可能性が高い.この場合、mtimeオプションでこのようなファイル用マイナス記号を検索することができます.変更時間を現在のn日以内に制限するファイルをプラス記号+で変更時間を現在のn日以前に制限することができます.
    システム/rootディレクトリで変更時間が5日以内のファイルを検索したい
    [root@VM_200_13_centos ~]# find /root -mtime -5 -print
    /root
    /root/a
    /root/.bash_history
    /root/xx.txt
    /root/tokyohot.txt
    /root/.history
    /root/.viminfo

    タイプ別検索
    -typeファイルのタイプを検索
    を選択します.
    説明
    -type b
    ブロックデバイスの検索
    -type d
    ディレクトリの検索
    -type c
    文字デバイスファイルの検索
    -type p
    パイプファイルの検索
    -type l
    シンボルリンクファイルの検索
    -type f
    標準ファイルの検索
    /etcディレクトリの下ですべてのディレクトリを検索
    [root@VM_200_13_centos ~]# find /etc -type d
    /etc
    /etc/selinux
    /etc/selinux/targeted
    /etc/selinux/targeted/contexts
    /etc/selinux/targeted/contexts/users
    ...

    ファイルサイズで検索
    ファイル長に従ってファイルを検索ここで指すファイル長はブロックで計量してもよいし、バイトで計量してもよい.バイトで計量するファイル長の表現形式はncであり、nはサイズを表し、ブロックで計量するファイル長は数字で表すだけでよい.
    ファイルの長さに基づいてファイルを検索する場合、バイトで表されるファイルの長さが一般的に使用されます.ファイルシステムのサイズを表示するには、ブロックを使用して計量すると変換しやすいためです.
    現在のディレクトリで1 Mバイト以上のファイルを検索
    [root@VM_200_13_centos ~]# find . -size +1000000c -print

    /home/apacheディレクトリでファイル長が100バイトのファイルを検索
    [root@VM_200_13_centos ~]# find /home/apache -size 100c -print

    現在のディレクトリで10ブロック以上のファイルを検索します(ブロックは512バイトです).
    [root@VM_200_13_centos ~]# find . -size +10 -print

    転載先:https://www.cnblogs.com/sakuraph/p/5814172.html