ホームページ >php教程 >PHP开发 >Linuxファイル検索コマンドfind

Linuxファイル検索コマンドfind

高洛峰
高洛峰オリジナル
2016-12-14 16:43:361270ブラウズ

あらゆるオペレーティングシステムは、何千もの異なる種類のファイルで構成されています。システム自体に付属するファイル、ユーザー自身のファイル、共有ファイルなどがあります。特定のファイルがハードドライブ上のどこに置かれたかを忘れてしまうことがあります。 Microsoft の WINDOWS オペレーティング システムでファイルを見つけるのは非常に簡単です。デスクトップで [スタート] - [検索] をクリックするだけで、ローカル ハードディスク、ローカル エリア ネットワーク、さらにはインターネット上でさまざまな方法で検索できます。ファイルや書類。

しかし、Linux を使用しているユーザーにとって、Linux 上でファイルを見つけるのは確かに面倒です。結局のところ、Linux では、ハードディスク上のファイルを見つけるために専用の「find」コマンドを使用する必要があります。 Linux でのファイル表現形式は非常に複雑です。WINDOWS や DOS での統一された AAAAAAA.BBB 形式ほど簡単ではありませんが、WINDOWS では、探しているファイルの名前やサフィックスを見つけるのが非常に簡単です。 。 Linux でファイルを検索するコマンドは通常「find」コマンドです。「find」コマンドは、Linux の使用と管理の日常業務で必要なファイルを簡単に見つけるのに役立ちます。 Linux 初心者にとって、「find」コマンドは Linux ファイルの特性を理解し学習する方法でもあります。 Linux ディストリビューションは数多くあり、バージョンアップも早いため、Linux の書籍には特定の設定ファイルの場所が記載されていることがよくありますが、Linux 初心者が検索しても見つからないこともよくあります。たとえば、REDHAT Linux 7.O および REDHAT Linux 7.1 では、いくつかの重要な設定ファイルが配置されているハードディスクの場所とファイル ディレクトリが大きく変更されています。 Linux ファイル で構成ファイルの 1 つを見つけるのは非常に困難です。筆者は、「find」コマンドに習熟する前からこの問題に悩まされていました。それでは、強力な「find」コマンドの使い方と用途をすべて詳しく紹介します。

ファイル名による検索方法:

この方法はWINDOWSでファイルを検索するのと同じくらい分かりやすいです。このファイルを 1 つのフォルダーに配置すると、一般的な「ls」コマンドを使用して簡単に見つけることができます。その後、「find」コマンドを使用して検索しても、「find」コマンドの威力はわかりません。そこでやめないでください。特定のファイルのファイル名はわかっているが、そのファイルがどのフォルダーに配置されているか、またはネストされたフォルダーさえもわからない場合。たとえば、httpd.conf ファイルがシステム内のどのディレクトリにあるかを忘れた場合、またはそれがシステム内のどこかわからない場合は、次のコマンドを使用できます:

find / -name httpd.conf

このコマンド構文は理解しやすいようです。find の直後に -name を書き、システムがファイル名に従って検索する必要があることを示し、最後にターゲット ファイル名 httpd.conf を書きます。しばらくすると、システムはコンピュータ画面に検索結果のリストを表示します:
etc/httpd/conf/httpd.conf

これは、Linux システムの httpd.conf ファイルのフルパスです。検索は成功しました。
上記の検索コマンドを入力した後にシステムが結果を表示しない場合は、システムが find/ -name httpd.conf コマンドを実行していないと考えてください。Apache サーバーがシステムにインストールされていない可能性があります。この場合、Apache Web サーバーをインストールし、find / -name httpd.conf を使用してこの構成ファイルを見つけます。

エラーのない検索テクニック:

Linux システムでは、「find」コマンドはほとんどのシステム ユーザーが使用できるコマンドであり、ROOT システム管理者に限定されたものではありません。ただし、一般ユーザーも「find」コマンドを使用するときにこのような問題に遭遇する可能性があります。つまり、Linux システムのシステム管理者 ROOT が特定のファイル ディレクトリをアクセス拒否モードに設定する可能性があります。このように、通常のユーザーには、これらのディレクトリまたはファイルを照会するために「find」コマンドを使用する権限がありません。一般のユーザーが「find」コマンドを使用してこれらのファイル ディレクトリをクエリすると、「Permissiondenied.」(アクセス禁止) という文字が表示されることがよくあります。システムは必要なファイルをクエリできません。このようなエラーを回避するために、エラー プロンプトを転送する方法を使用して、ファイルの検索を試みます。 Enter
find / -name access_log 2>/dev/null

この方法は、検索エラー プロンプトを特定のディレクトリに転送することです。システムがこのコマンドを実行すると、発生したエラー情報は stderrstream 2 に直接送信されます。 Access_log 2 は、システムがエラー情報を stderrstream 2 に送信することを示します。 /dev/null は、空であるか間違っていることを示す特別なファイルです。これにより、照会されたエラー情報は転送され、再度表示されなくなります。

Linux システムでファイルを探す場合にも、このような現実的な問題に遭遇します。ハードディスク全体で特定のファイルを検索する場合、このシステム、特に大規模な Linux システムや大容量のハードディスクでは、ファイルが深くネストされたディレクトリに配置されている場合、検索に時間がかかります。このファイルが大きなディレクトリに保存されていることがわかっている場合は、このディレクトリ内を検索するだけで時間を大幅に節約できます。この問題を解決するには、find /etc -name httpd.conf を使用します。上記のコマンドは、etc ディレクトリ内の httpd.conf ファイルを照会することを意味します。ここで、関数記号「/」の意味をもう一度説明します。「find/」と入力すると、Linux システムは ROOT ディレクトリ全体のファイルを検索する必要があることを意味します。 「find/etc」はハードディスク全体を指しますが、「find/etc」は etc ディレクトリ内のファイルのみを検索することを意味します。 「find/etc」は etc ディレクトリ内のファイルの検索のみを意味するため、検索速度もそれに応じてはるかに速くなります。

ファイル名の一部に基づく検索方法:
この方法は、WINDOWSで既知のファイル名を検索するのと同じです。ただし、Linux でファイル名の一部に基づいてファイルを検索する方法は、WINDOWS での同様の検索方法よりもはるかに強力です。たとえば、ファイルに srm という 3 文字が含まれていることがわかっている場合、これらの 3 文字を含むシステム内のすべてのファイルを検索できます。

find /etc -name '*srm*'

This Theこのコマンドは、Linux システムが /etc ディレクトリー全体で 3 文字 srm を含むすべてのファイルを検索することを示します。たとえば、absrmyz、tibc.srm、および条件を満たすその他のファイルが表示されます。このファイルが srm の 3 文字で始まることもわかっている場合は、最初のアスタリスクを省略することもできます。コマンドは次のとおりです:

find/etc -name 'srm*'

これは srmyz と同じです ファイルは次のとおりです。 absrmyz や absrm などのファイルが要件を満たしておらず、表示されない場合にのみ検索されます。これにより、ファイル検索の効率と信頼性が大幅に向上します。

ファイルの特性に基づいてクエリを実行する方法:

ファイルのサイズ、変更日、その他の特性だけがわかっている場合は、「find」コマンドを使用してファイルを見つけることもできます。これは基本的に「検索」と同じです。 WINDOWS システムの「」機能。 Microsoft Search では、Windows の検索アシスタントを使用して、ネットワーク上のファイルやフォルダー、プリンター、ユーザー、およびその他のコンピューターを簡単に検索できます。インターネットでの検索も簡単になります。 Search Assistant には、コンピュータ上のすべてのファイルのインデックスを維持するインデックス サービスも含まれており、検索を高速化します。検索アシスタントを使用する場合、ユーザーは複数の検索基準を指定できます。たとえば、ユーザーは名前、種類、サイズでファイルやフォルダーを検索できます。ユーザーは、特定のテキストを含むファイルを検索することもできます。 Active Directory を使用している場合は、特定の名前または場所でプリンターを検索することもできます。

たとえば、Linux ファイルのサイズが 1,500 バイトであることがわかっている場合、次のコマンドを使用して find / -size 1500c をクエリできます。文字 c は、検索するファイルのサイズがバイト単位であることを示します。このファイルの具体的なサイズさえわからない場合は、Linux のあいまい検索を使用して問題を解決することもできます。たとえば、コマンド find/ -size +10000000c を入力すると、システムがルート ディレクトリで 10000000 バイトを超えるファイルを検索して表示することを指定します。コマンドの「+」は、システムが指定されたサイズより大きいファイルのみをリストする必要があることを示し、「-」を使用する場合は、システムが指定されたサイズより小さいファイルをリストする必要があることを示します。次のリストは、Linux でさまざまな「find」コマンドを使用した後にシステムが実行する検索アクションです。「find」コマンドに関する限り、Linux ではさまざまな方法で使用できることが簡単にわかります。 「」コマンドを柔軟に使用してファイルを検索できるため、Windows での検索スキルが低い必要はありません。

find / -amin -10 # システム内で過去 10 分間にアクセスされたファイルを検索
find / -atime -2 # システム内で過去 48 時間にアクセスされたファイルを検索
find / -empty # 空のファイルを検索システム内のファイルまたはフォルダー
find / -group cat # システム内で groupcat に属するファイルを検索します
find / -mmin -5 # システム内で過去 5 分間に変更されたファイルを検索します
find / -mtime -1 # ファイルを検索in the system 過去 24 時間に変更されたファイル
find / -nouser #システム内の無効なユーザーに属するファイルを検索します
find / -user fred #システム内のユーザー FRED に属するファイルを検索します


以下のリストはfor find このコマンドでは、ファイルの特性を検索するためのいくつかの条件を指定できます。すべての検索条件がここにリストされているわけではありません。すべての find コマンドの検索機能については、Linux に関する関連書籍を参照してください。
-amin n
システム内で過去 N 分間にアクセスされたファイルを検索します
-atime n
システム内で過去 n*24 時間にアクセスされたファイルを検索します
-cmin n
過去 N 分間にステータスが変更されたファイルを検索しますシステム内の分数
-ctime n
システム内で過去 n*24 時間以内にステータスが変更されたファイルを検索します
-empty
システム内の空のファイル、または空のファイル ディレクトリ、またはディレクトリ内にサブディレクトリのないフォルダーを検索します
-false
システム内で常に間違っているファイルを検索します
-fstype type
システム内の指定されたファイル システムに存在するファイルを検索します、例: ext2 .
-gid n
ファイル番号グループIDがnであるシステム内のファイルを検索します
-group gname
gnamファイルグループに属するシステム内のファイルを検索し、グループとIDを指定します
コントロールの説明Find コマンドのオプション:
Find コマンドは、検索操作を制御するためのいくつかの独自のオプションもユーザーに提供します。次の表は、find コマンドの最も基本的で一般的に使用される制御オプションとその使用法をまとめたものです。
オプション
使用法の説明
-daystart
今日から24時間以内にシステムのファイルをテストします 使用法は-amin
- Depth
指定したディレクトリ内のファイルの内容の検索を優先するために使用します。特定のレベルで
-follow
ワイルドカードリンクメソッドに従って検索する; さらに、クエリするワイルドカードリンクメソッドを無視することもできます
-help
コマンドの概要を表示します
-max Depth レベル
あるレベルのディレクトリを検索します降順
-mount
ファイルシステムディレクトリ内を検索しない、使い方は-xdevと似ています
-noleaf
非UNUXファイルシステム、MS-DOSシステム、CD-ROMファイルシステムでの最適検索を無効にする
-version
バージョン番号を出力します


-follow オプションを使用した後、find コマンドはワイルドカード リンク メソッドに従って検索します。このオプションを指定しない限り、find コマンドは通常、ファイルを検索するときにワイルドカード リンク メソッドを無視します。

-max Depth オプションの機能は、find コマンドが特定のレベルを超えるファイルを検索したり、ディレクトリ内で降順にファイルを検索するときに多すぎるディレクトリを検索したりすることを制限することです。これにより、検索速度が遅くなり、検索に時間がかかりすぎます。たとえば、現在の (.) ディレクトリのサブディレクトリで fred という名前のファイルを見つけたい場合は、次のコマンドを使用できます

find . -max Depth 2 -name fred

fred ファイルが ./ にある場合sub1/fred ディレクトリにある場合、このコマンドはファイルを直接見つけ、検索は簡単に成功します。このファイルが ./sub1/sub2/fred ディレクトリにある場合、このコマンドはそれを見つけることができません。 find コマンドには、以前にディレクトリ内の最大クエリ ディレクトリ レベル 2 が指定されていたため、2 レベルのディレクトリ内のファイルのみを検索できます。この目的は、find コマンドがファイルをより正確に見つけられるようにすることです。特定のファイルが存在するおおよそのファイル ディレクトリ レベルがすでにわかっている場合は、-max Depth n を追加すると、指定したディレクトリでそのファイルをすばやく見つけることができます。

ファイルを検索するには混合検索方法を使用します
たとえば、/tmp ディレクトリ内で 100000000 バイトを超え、48 時間以内に変更されたファイルを検索する場合は、次のように使用できます。 2 つの検索オプションを組み合わせて、ハイブリッド検索方法にリンクします。
find /tmp -size +10000000c -and -mtime +2

コンピューター言語を勉強したことのある友人は皆知っていることですが、コンピューター言語では and and or はそれぞれ「and」と「or」の関係を表すのに使われます。 Linuxシステムの検索コマンドでもよく使われます。
別の例もあります、
find / -user fred -or -user george

これは、/tmp ディレクトリで 2 人のユーザー fred または george に属するファイルを見つけると解釈できます。
find コマンドでファイルを検索するために「not」関係を使用することもできます。/tmp ディレクトリ内で panda に属さないすべてのファイルを検索したい場合は、単純な
find /tmp ! -user panda
コマンドを使用します。この問題を解決するために。 。とてもシンプルです。

ファイルを検索して表示する方法
ファイルを見つけることも、見つかったファイルの詳細情報と属性を知りたいと考えています。ファイルを見つけた場合、LS コマンドを使用してファイルを表示するのは非常に簡単です。ファイル情報は面倒ですが、これら 2 つのコマンドを組み合わせることもできます。

find / -name "httpd.conf" -ls

システムは httpd.conf ファイルを見つけると、すぐに画面に httpd.conf ファイルの情報を表示します。
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

次の表は、ファイルの検索とファイル情報の表示によく使用されるパラメーターと用途を示しています。メソッド
オプション
使用法の説明
-exec コマンド;
コマンドを検索して実行します
-fprint file
ファイルの完全なファイル名を出力します
-fprint0 file
空のファイルを含むファイルの完全なファイル名を出力します
-fprintfファイル形式
ファイル形式を印刷します
-ok コマンド;
操作を実行するコマンドをユーザーに与え、ユーザーの Y 確認入力に従って実行します
-printf 形式
ファイル形式を印刷します
-ls
ファイルを印刷します同じファイル形式です。


概要: ここまで、find コマンドの使用方法について多くのことを学び、Linux での find コマンドの使用方法をマスターできれば、Linux ドキュメントでの find は難しいことではありません。どちらか。


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。