一般的な形式: find pathname -options [-print -exec -ok]
例:
find / -name filename ルート ディレクトリで filename という名前のファイルを検索します。私がよく使用する方法 find . -name filename
find /etc - name *s* ディレクトリ内で s で始まるファイルを検索
find /etc -name *S ディレクトリ内で s で終わるファイルを検索
find /etc -name s* ディレクトリ内で s で始まるファイルを検索
find / - amin -10 過去 10 分間にアクセスされたファイルをシステムで検索します
find / -atime -2 システムで過去 48 時間にアクセスされたファイルを検索します
find / -empty システム内の空のファイルまたはフォルダーを検索します
find / -group groupname システム内で groupname に属するファイルを検索します
find / -mmin -5 システム内で過去 5 分間に変更されたファイルを検索します
find / -mtime -1 システム内で過去 24 時間内に変更されたファイルを検索します
find /-nouserシステム内でユーザーに属するファイルを検索します
find / -user username システム内でユーザー名に属するファイルを検索します
find / -ctime -1 システム内で過去 24 時間にステータスが変更されたファイルを検索します
find / - fstype typeシステム内のファイル タイプを見つけますか?システム内で user1name または user2name に属するファイルを検索するには、 find / -user user1name -or -user user2name
システム内で user1name と user2name の両方に属するファイルを検索するには、 find / -user user1name -and -user2name を実行します。
1. find コマンドの形式
1. find コマンドの一般的な形式は次のとおりです。
find pathname -options [-print -exec -ok ...]
2. find コマンドのパラメータ: 検索されるディレクトリのパス。 find コマンドによって。たとえば、現在のディレクトリを表すには . を使用し、システム ルート ディレクトリを表すには / を使用します。
-print: find コマンドは、一致するファイルを標準出力に出力します。
-exec: find コマンドは、一致するファイルに対してこのパラメーターで指定されたシェル コマンドを実行します。対応するコマンドは「command」{ } /; の形式になっており、{ } と /; の間のスペースに注意してください。
-ok: -exec と同じですが、このパラメーターで指定されたシェル コマンドをより安全なモードで実行します。各コマンドを実行する前に、ユーザーが実行するかどうかを決定するためのプロンプトが表示されます。
3. コマンドオプションの検索
-name
ファイル名でファイルを検索します。
-perm
ファイルのアクセス許可に基づいてファイルを検索します。
-prune
このオプションを使用すると、現在指定されているディレクトリ内で find コマンドが検索されないようにすることができます。 - Depth オプションも使用されている場合、-prune は find コマンドによって無視されます。
-user
所有者に従ってファイルを検索します。
-group
所属するグループごとにファイルを検索します。
-mtime -n +n
変更時刻に従ってファイルを検索します。 - n はファイル変更時刻が今から n 日以内であることを意味し、+ n はファイル変更時刻が今から n 日前であることを意味します。 find コマンドには -atime オプションと -ctime オプションもありますが、それらは -m time オプションと同じです。
-nogroup
所属する有効なグループがないファイルを検索します。つまり、ファイルが所属するグループが /etc/groups に存在しません。
-nouser
有効な所有者のないファイルを検索します。つまり、ファイルの所有者が /etc/passwd に存在しません。
-newer file1 ! file2
変更時刻が file1 より新しく、file2 より古いファイルを検索します。
-type
次のような特定のタイプのファイルを検索します。
b - ブロックデバイスファイル。
d - ディレクトリ。
c - キャラクターデバイスファイル。
p - パイプファイル。
l - シンボリックリンクファイル。
f - 通常のファイル。
-size n: [c] ファイル長が n ブロックのファイルを検索します。c では、ファイルの長さはバイト単位です。
- Depth: ファイルを検索するときは、まず現在のディレクトリでファイルを検索し、次にそのサブディレクトリでファイルを検索します。
-fstype: 特定のタイプのファイル システムにあるファイルを検索します。これらのファイル システム タイプは通常、設定ファイル /etc/fstab にあります。この設定ファイルには、このシステムのファイル システムに関する情報が含まれています。
-mount: ファイルを検索するときにファイル システムのマウント ポイントを越えないでください。
-follow: find コマンドでシンボリック リンク ファイルが見つかった場合、そのリンクが指すファイルをたどります。
-cpio: 一致するファイルに対して cpio コマンドを使用して、これらのファイルをテープ デバイスにバックアップします。
さらに、次の 3 つの違い:
-amin n
システム内で過去 N 分間にアクセスされたファイルを検索する
-atime n
システム内で過去 n*24 時間以内にアクセスされたファイルを検索する
-cmin n
過去 N 分間にシステム内でアクセスされたファイルを検索します ファイルのステータスが変更されたファイルを検索します
-ctime n
システム内で過去 n*24 時間以内にファイルのステータスが変更されたファイルを検索します
-mmin n
システム内のファイルデータが過去 N 分間に変更されました
-mtime n
システム内のファイルを検索します 過去 n*24 時間以内にファイルデータが変更されたファイル
4. exec または ok を使用してシェルコマンドを実行します
find を使用すると、必要な操作をファイルに記述するだけで済み、exec を使用して find と連携することができ、非常に便利です
一部のオペレーティング システムでは、ls または ls -l などのコマンドを実行できるのは -exec オプションのみです。ほとんどのユーザーは、このオプションを使用して古いファイルを見つけて削除します。実際に rm コマンドを実行してファイルを削除する前に、ls コマンドを使用して、削除対象のファイルであることを確認することをお勧めします。
exec オプションの後には、実行するコマンドまたはスクリプトが続き、次に { }、スペース、/ のペア、最後にセミコロンが続きます。 exec オプションを使用するには、print オプションも使用する必要があります。 find コマンドを確認すると、このコマンドは現在のパスからの相対パスとファイル名のみを出力することがわかります。
例: ls -l コマンドを使用して一致したファイルをリストするには、find コマンドの -exec オプションに ls -l コマンドを追加します
# find 。 -type f -exec ls -l { } /;
- rw-r--r-- 1 ルート root 34928 2003-02-25 ./conf/httpd.conf
-rw-r--r-- 1 ルート root 12959 2003-02-25 ./conf /magic
- rw-r--r-- 1 root root 180 2003-02-25 ./conf.d/README
上記の例では、find コマンドは現在のディレクトリ内のすべての通常のファイルと一致し、ls を使用します。 -exec オプション -l コマンドでそれらをリストします。
5 日以上前に変更された /logs ディレクトリ内のファイルを見つけて削除します:
$ find logs -type f -mtime +5 -exec rm { } /;
覚えておいてください: シェルで何らかの方法でファイルを削除する前に、最初に対応するファイルを確認する必要があります、注意してください。 -exec オプションを指定したセーフ モードは、mv や rm などのコマンドを使用するときに使用できます。一致する各ファイルを操作する前にプロンプトが表示されます。
次の例では、find コマンドは、ファイル名が .LOG で終わり、変更時刻が 5 日以上前である現在のディレクトリ内のすべてのファイルを検索し、それらを削除しますが、削除する前にプロンプトが表示されるだけです。
$ find . -name "*.conf" -mtime +5 -ok rm { } /;
< rm ... ./conf/httpd.conf > n
ファイルを削除するには、n を押します削除されていません。
-exec オプションを使用すると、任意の形式のコマンドを使用できます。
次の例では grep コマンドを使用します。 find コマンドは、まず passwd、passwd.old、passwd.bak などの「passwd*」という名前のすべてのファイルと一致し、次に grep コマンドを実行して、これらのファイルに sam ユーザーが存在するかどうかを確認します。
# find /etc -name "passwd*" -exec grep "sam" { } /;
sam:x:501:501::/usr/sam:/bin/bash