Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxのファイル検索コマンドfind、xargs details

Linuxのファイル検索コマンドfind、xargs details

  

1.find f i n dは強力な機能を持っているので、たくさんのオプションがありますが、そのほとんどは理解する価値があります。システムにネットワークファイルシステム(NFS)が含まれている場合でも、f i n dコマンドはファイルシステムでも有効です。適切な権限を持っているのはあなただけです。非常にリソースを消費するfindコマンドを実行するとき、大規模なファイルシステムをトラバースするには長い時間がかかる可能性があるため、多くの人がバックグラウンドで実行する傾向があります(ここでは30 Gバイトを超えるファイルシステムを指します)。 )

F indコマンドの一般的な形式は次のとおりです。find pathname -options [-print -exec -ok ...]

コマンドのパラメータを見てみましょう。

pathname:findコマンドが見つけたディレクトリパス。たとえば、現在のディレクトリを示すには。を、システムのルートディレクトリを表すには/を使用します。 -print:findコマンドは、一致するファイルを標準出力に出力します。 -exec:findコマンドは、一致するファイルに対してこのパラメーターで指定されたs h e l lコマンドを実行します。対応するコマンドは 'command' {} \\;の形式です。{}と\\;の間のスペースに注意してください。 -ok:このパラメータで指定されたコマンドがより安全なモードで実行されることを除いて、 - e x e cと同じです各コマンドが実行される前に、ユーザーに実行するかどうかを決定するプロンプトが表示されます。

findコマンドのオプション名:ファイル名でファイルを探します。 -perm:ファイルのアクセス権でファイルを見つけます。 -prune:このオプションを使用すると、現在指定されているディレクトリでf i n dコマンドが見つからないようにすることができ、同時に-depthオプションを使用した場合、-pruneはf i n dコマンドで無視されます。 -user:ファイルの所有者でファイルを見つけます。 -group:ファイルが属するグループに従ってファイルを検索します。 -mtime -n + n:ファイルが変更された時刻に従ってファイルを検索します-nはファイルの変更時刻がn日以内であることを示し、+ nはファイルの変更時刻が現在n日前であることを示します。 F i n dコマンドには-a t i m eおよび-c t i m eオプションもありますが、すべて-m t i m eオプションがあります。 -nogroup:有効なグループがないファイルを検索します。つまり、そのファイルが属するグループが/e t c /g r u up sに存在しません。 -nouser:有効な所有者のないファイルを検索します。つまり、ファイルの所有者は/e t c /p s s w dに存在しません。 -newer file1!file2:ファイル1よりも新しいがファイル2よりも古いファイルを検索します。 -type次のような特定の種類のファイルを探します。

b - ブロック型デバイスファイル。 d - ディレクトリc - キャラクタ型デバイスファイルp - パイプファイルl - シンボリックリンクファイルf - 通常のファイル

-size n:[c]ファイル長がnブロックのファイルを検索します。cは、ファイルの長さがバイト単位であることを示します。 -depth:ファイルを探すときは、まず現在のディレクトリでファイルを見つけ、次にそのサブディレクトリで調べます。 -fstype:ある種類のファイルシステムにあるファイルを検索しますこれらのファイルシステムの種類は通常、このシステムのファイルシステムに関する情報を含む設定ファイル/e t c /f s t a bにあります。

-mount:ファイルを探すときにファイルシステムを通過しないでください。 -follow:f i n dコマンドがシンボリックリンクファイルを見つけた場合、そのリンクが指すファイルまでトレースします。 -cpio:一致するファイルに対してc p i oコマンドを使用して、これらのファイルをテープデバイスにバックアップします。

さらに、次の3つの違いがあります。-amin n

システム内の過去N分間のアクセスファイルを検索します。

-atime n

システムを検索します。最後のn * 24時間アクセスファイル

-cmin n

システム内で変更されたファイル状態の最後のN分間にファイルを検索します。

-ctime n

システム内で過去n * 24時間でファイルステータスが変更されたファイルを検索します。

-mmin n

システム内で変更されたファイルデータの最後のN分間でファイルを検索します。

-mtime n

システム内で最後のn * 24時間に変更されたファイルデータを探す

ディレクトリを無視する

ファイルを検索するときにディレクトリを無視したい場合は、探しているディレクトリにファイルがない場合は、-pruneオプションを使用して無視するディレクトリを指定できます。 -p r u n eオプションを使用するときは注意してください。-d e p t hオプションも使用すると、 - p r u n eオプションはf i n dコマンドで無視されるためです。

/appsディレクトリにあるファイルを見つけたいが、/apps /binディレクトリを調べたくない場合は、次のコマンドを使用できます。

コード:$ find /apps -path" /apps /Bin" -prune -o -print

execまたはokを使用してシェルコマンドを実行するfindを使用する場合は、目的の操作をファイルに書き込むだけで、execを使用して検索と一致させることができ、非常に便利です。

(一部のオペレーティングシステムでは、lsやls -lなどのコマンドを実行できるのは-execオプションのみです)。ほとんどのユーザーはこのオプションを使って古いファイルを見つけて削除します。実際にr mコマンドを実行してファイルを削除する前に、l sコマンドを使用して削除するファイルを確認することをお勧めします。

e x e cオプションの後には、実行するコマンドまたはスクリプトが続き、その後に{}、スペースと\\、最後にセミコロンが続きます。

e x e cオプションを使用するには、同時にp r i n tオプションを使用する必要があります。 f i n dコマンドを確認すると、コマンドは現在のパスからの相対パスとファイル名のみを出力します。

例:ls -lコマンドを使用して一致するファイルを一覧表示するには、findコマンド#findの-execオプションにls -lコマンドを入力します。-type f -exec ls -l {} \\; - rw-r - r-- 1 root root 34928 2003-02-25 ./conf/httpd.conf-rw-r--r-- 1 root root 12959 2003-02-25 ./conf/magic -rw-r - r-- 1 root root 180 2003-02-25 ./conf.d/README

上記の例では、findコマンドは現在のディレクトリ内の通常のファイルすべてに一致します。 - execオプションでls -lコマンドを使用してそれらをリストします。

/logsディレクトリで5日より前の時刻に変更されたファイルを見つけて削除します。$ find logs -type f -mtime + 5 -exec rm {} \\;

シェルでファイルを削除する前に、まず対応するファイルを確認してください。注意してください。 m vやr mなどのコマンドを使用するときは、セーフモードの-e x e cオプションを使用できます。一致する各ファイルに取り組む前にそれはあなたを促します。

次の例では、f i n dコマンドは、現在のディレクトリ内で名前が.LOGで終わり、5日間に渡って変更されているすべてのファイルを検索し、それらを削除します。 $ find。-name" *。conf" -mtime + 5 -ok rm {} \\;< rm ... ./conf/httpd.conf>?n

ファイルを削除するには、yキーを押します。削除しない場合はnを押します。

-e x e cオプションでは、任意の形式のコマンドを使用できます。

以下の例では、g r e pコマンドを使用しています。 f i n dコマンドは、最初にpasswd、passwd.old、passwd.bakなどのファイル名「passwd *」を持つすべてのファイルを照合し、次にgrepコマンドを実行してこれらのファイルにsamユーザーがいるかどうかを確認します。

Copyright © Windowsの知識 All Rights Reserved