ホームページ  >  記事  >  運用・保守  >  Linux の find が指定されたサブディレクトリを検索しないのはなぜですか?

Linux の find が指定されたサブディレクトリを検索しないのはなぜですか?

WBOY
WBOYオリジナル
2022-07-12 15:30:354637ブラウズ

Linux では、find コマンドの "-prune" パラメータを使用して、ファイルを検索するときに、指定したサブディレクトリを検索しないようにできます。find コマンドは、指定したディレクトリ内のファイルを検索するために使用されます。パラメータが「-prune」に設定されている場合は、無視するパス パラメータが検索パスの直後に続く必要がある限りフィルタリングできます。そうでない場合、パラメータは機能しません。構文は「検索パス-パス サブディレクトリ パスが見つからない」です。 -プルーン..."。

Linux の find が指定されたサブディレクトリを検索しないのはなぜですか?

#このチュートリアルの動作環境: linux7.3 システム、Dell G3 コンピューター。

Linux find で指定したサブディレクトリを検索せずに検索する方法

Linux find で検索する場合、特定のディレクトリを無視して検索しないことが必要な場合があります。 -prune パラメータを使用してフィルタリングできます。ただし、無視するパス パラメータは検索されたパスの直後になければならないことに注意してください。そうでない場合、このパラメータは機能しません。

例は次のとおりです。

以下は、/home/carryf ディレクトリ内のすべてのファイルを指定して検索しますが、/home/carryf/ へのパスは含まれません。 astetc は無視されます:

find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -print

ファイル名で検索すると、次のようになります:

find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -name "cdr_*.conf" -print

3 つ以上のパスを無視したい場合はどうすればよいですか?

find /home/carryf −path"/home/carryf/astetc"−o−path"/home/carryf/etc" -prune -o -type f  -print
find /home/carryf −path"/home/carryf/astetc"−o−path"/home/carryf/etc" -prune -o -type f  -name "cdr_*.conf" -print

前後にスペースがあることに注意してください。

ファイルの内容を検索するには、次のステートメントでスペースを含むディレクトリの問題を解決できます。

find ./ -name "MySQL*" -print0  |xargs -0 grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

ディレクトリにスペースがない場合は、次の形式で実行できます。

find ./ -name "mysql*"  |xargs  grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

拡張知識

Linux の find コマンドは、指定されたディレクトリ内のファイルを検索するために使用されます。パラメータの前にある文字列は、検索対象のディレクトリの名前として扱われます。パラメータを何も設定せずにこのコマンドを使用すると、find コマンドは現在のディレクトリ内のサブディレクトリとファイルを検索します。見つかったすべてのサブディレクトリとファイルが表示されます。

構文

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

パラメータの説明:

find は、次のルールに従ってパスと式を決定します。コマンド ラインの最初のもの - ()、! の前の部分は次のとおりです。 path. の後に式が続きます。 path が空の文字列の場合は、現在のパスが使用され、expression が空の文字列の場合は、デフォルトの式として -print が使用されます。

式で使用できるオプションは 20 ~ 30 個ありますが、ここでは最も一般的に使用されるオプションのみを紹介します。

-mount、-xdev: 指定されたディレクトリと同じファイル システムにあるファイルのみをチェックし、他のファイル システムにあるファイルのリストを避けます

-amin n: 過去 n 分間の読み取り

-newer file: file file

-atime n: 過去 n 日間に読み取られたファイル

-cmin n: で変更されたファイル過去 n 分

-cnewer file: ファイルより新しいファイル file

-ctime n: 過去 n 日間に作成されたファイル

-mtime n: 過去に変更されたファイルn 日

-empty: 空のファイル -gid n または -group name: gid が n またはグループ名が name

- ipath p, -path p: パス名が p と一致するファイル、ipath は大文字と小文字を無視します。

-name name、-iname name: ファイル名が name と一致するファイル。 iname は大文字と小文字を無視します

-size n: ファイル サイズは n 単位で、b は 512 バイトのブロックを表し、c は文字数を表し、k はキロバイトを表し、w は 2 バイトを表します。

-type c: ファイルの種類は c です。

推奨学習: Linux ビデオ チュートリアル

以上がLinux の find が指定されたサブディレクトリを検索しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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