RHEL 7ファイル検索
本文はRHEL 7の下でwhich、whereis、locate、findコマンドの使用を紹介し、findコマンドの使用を重点的に紹介する.
which
コマンド:which作用:コマンドを検索する実行ファイルパス構文:which[オプション][--]名...説明:whichコマンドは比較的簡単で、彼のオプションはよく使われません
whereis
コマンド:whereisの役割:実行可能ファイル、ソースファイル、ファイルシステムにおけるヘルプファイルの位置構文:whereis[-bmsu][BMSディレクトリ名-f]ファイル名
オプション
説明
-b
実行可能ファイルの配置
-m
ヘルプファイルの配置
-s
ソースファイルの配置
-u
実行可能ファイル、ソースファイル、ヘルプファイル以外のファイルを検索
-B
実行可能ファイルを検索するパスを指定します
-M
ヘルプファイルの検索パスの指定
-S
ソースファイルの検索パスの指定
-f
M-Sまたは-Bオプション検索の終了信号
locate
locateは、ユーザーがファイルシステム内に指定されたファイルがあるかどうかを迅速に検索できるようにします.その方法は、システム内のすべてのファイル名とパスを含むデータベースを構築した後、検索時にこのデータベースをクエリーするだけで、実際にファイルシステムに深く入り込む必要はありません.
コマンド:locateの役割:インデックス・データベースによるファイルの検索構文:locate[オプション]...[ATTERN]...
オプション
説明
-b
パス名の基本名のみ一致
-c
クエリー結果の合計のみ印刷
-e
既存のファイルのみをクエリー
-L
シンボルリンクファイルを検索するときにリンクされたターゲットファイルを追跡
-i
大文字と小文字の検索を無視
-l
クエリー出力の結果数を制限し、数量に追随する必要があります.
-P
リンクファイルを追跡せず、-Lとは反対
-0
出力の結果を区切らない
-S
データベースの統計を印刷します.このオプションは他のオプションとは使用できません.
-q
データベースが読み込まれていないエラーメッセージをレポート
-r
正規表現モードで一致
-w
パス検索全体を一致させる(デフォルトではこのオプションを使用します)
locateを使用してクエリーができない場合は、コマンドupdatedbを使用してmlocateデータベースを更新します.
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ディレクトリを表します.
現在のディレクトリおよびサブディレクトリですべての*.txtファイルを検索
/etcディレクトリでファイル名hostで始まるファイルを検索するには
権限による検索
ファイル権限モードでファイルを検索すると.3桁の10進数の権限表現を使用することが望ましい
現在のディレクトリの下でファイル権限ビット755のファイルを検索すると、所有者が読み取り、書き込み、実行でき、他のユーザーが読み取り、実行できるファイルです.
ディレクトリを無視
-pruneオプションを使用して、無視するディレクトリを指定します.
このオプションを使用するときに-depthオプションを同時に使用すると、-pruneオプションはfindコマンドによって/appsディレクトリの下でファイルを検索されませんが、/apps/binディレクトリの下で検索されません.
サブディレクトリの検索
現在のすべてのファイルを一致させてから、サブディレクトリで次の例を検索する場合、findコマンドはファイルシステムのルートディレクトリから始まり、CON.FILEというファイルを検索します.まずすべてのファイルを一致させてからサブディレクトリで検索します.
所有者別検索
$HOMEディレクトリでrootのファイルを検索するなど、ファイルの所有者別にファイルを検索します.
所有者勘定科目が削除されたファイルを検索するには、-nouserオプションを使用します.これにより、/etc/passwdファイルに有効な勘定科目がないファイルを見つけることができます.-nouserオプションを使用する場合、ユーザー名を指定する必要はありません.findコマンドはあなたのために相応の仕事を完成することができます
グループ別検索
userとnouserオプションのように、findコマンドもファイルが属するユーザーグループに対して同じオプションを有します.
有効なユーザー・グループがないすべてのファイルを検索するには、nogroupオプションを使用します.
時間単位で検索
変更時間に従ってファイルを検索する場合は、mtime、atime、ctimeオプションを使用します.
システムに突然空き容量がなくなった場合、あるファイルの長さがこの間に急速に増加する可能性が高い.この場合、mtimeオプションでこのようなファイル用マイナス記号を検索することができます.変更時間を現在のn日以内に制限するファイルをプラス記号+で変更時間を現在のn日以前に制限することができます.
システム/rootディレクトリで変更時間が5日以内のファイルを検索したい
タイプ別検索
-typeファイルのタイプを検索
を選択します.
説明
-type b
ブロックデバイスの検索
-type d
ディレクトリの検索
-type c
文字デバイスファイルの検索
-type p
パイプファイルの検索
-type l
シンボルリンクファイルの検索
-type f
標準ファイルの検索
/etcディレクトリの下ですべてのディレクトリを検索
ファイルサイズで検索
ファイル長に従ってファイルを検索ここで指すファイル長はブロックで計量してもよいし、バイトで計量してもよい.バイトで計量するファイル長の表現形式はncであり、nはサイズを表し、ブロックで計量するファイル長は数字で表すだけでよい.
ファイルの長さに基づいてファイルを検索する場合、バイトで表されるファイルの長さが一般的に使用されます.ファイルシステムのサイズを表示するには、ブロックを使用して計量すると変換しやすいためです.
現在のディレクトリで1 Mバイト以上のファイルを検索
/home/apacheディレクトリでファイル長が100バイトのファイルを検索
現在のディレクトリで10ブロック以上のファイルを検索します(ブロックは512バイトです).
転載先:https://www.cnblogs.com/sakuraph/p/5814172.html
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[オプション][パス...[式]説明:
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コマンドの式は非常に多く、以下では一般的ないくつかだけを紹介します.
式#シキ#
説明
一致するファイルを標準出力に出力
-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