findコマンドの使い方

Linuxでファイルやディレクトリを検索するコマンドにfindコマンドがあります。このコマンドは、非常に高機能で、多くの条件でファイルを検索することができます。また、検索したファイルやディレクトリに対して、コマンド実行することもできます。

findコマンドの構文

findコマンドの構文は、次のとおりです。

find 「検索ディレクトリ」 「検索条件」 「コマンド」

「検索ディレクトリ」の指定について

検索するディレクトリを指定します。指定したディレクトリを起点としてそのサブディレクトリも検索されます。ディレクトリの指定は、1つのディレクトリでも可能だし、複数のディレクトリでも可能です。またカレントディレクトリを「.」で指定することも可能です。

「検索ディレクトリ」の設定例

カレントディレクトリの全ファイルの一覧を表示する場合
find . -type f -print
ディレクトリ「/usr/local」「/usr/bin」「/usr/sbin」の全ファイルを表示する場合
find /usr/local /usr/bin /usr/sbin -type f -print

「検索条件」の指定について

ファイルやディレクトリを検索する時の検索条件を指定します。この条件に合致したファイルやディレクトリのパスが検索結果として表示されます。

-name file
検索するファイルやディレクトリを指定します。ワイルドカードとして 「*」「?」「[] 」を使用することができます。ただし、findコマンドで、「*」を使用するときは、「”*.txt”」のよう「”」で囲まないとパス名展開され実行エラーとなります。
-iname file
検索するファイル名を指定します。大文字小文字を区別しない以外は -name と同じです。
-regex reg
正規表現を使用した検索をします。パスを含むファイル名全体が正規表現「reg」の検索対象になります。「find」コマンドの検索結果は、「./aaa/bbb/ccc.txt」となるので検索結果に合致した正規表現で検索する必要があります。検索条件を「aaa」としても検索されません。
-iregex reg
大文字小文字を区別しない以外は、-regex と同じです。
-atime [+-]n
n日前にアクセスされたファイルを検索します。
-ctime [+-]n
n日前にファイルステータスが変更されたファイルを検索します。ファイルステータスとは、ファイル名、ファイルサイズ、パーミッション、リンク数、オーナー、グループなどのことです。
-mtime [+-]n
n日前に更新されたファイルを検索します。
-type ファイルの種類
指定されたファイルの種類で検索します。「find」コマンドで指定できるファイルの種類は、d(ディレクトリ)、f(ファイル)、l(シンボリックリンク)です。
-size [+-]n[ck]
指定されたファイルサイズで検索します。サイズの後に「c」を付加するとバイト単位、「k」を付加するとキロバイト単位で検索します。
-user hoge
所有者がhogeのファイルやディレクトリを検索します。
-perm 755
パーミッションが755に設定されているファイルやディレクトリを検索します。

「検索条件」の設定例

5日前にアクセスされたファイルを検索する場合
find /etc/ -atime 5
6日以前にアクセスされたファイルを検索する場合
find /etc/ -atime +5
4日以内にアクセスされたファイルを検索する場合
find /etc/ -atime -5
5日前にファイルステータスが変更されたファイルを検索する場合
find /etc/ -ctime
6日以前にファイルステータスが変更されたファイルを検索する場合
find /etc/ -ctime +5
4日以前にファイルステータスが変更されたファイルを検索する場合
find /etc/ -ctime -5
5日前に更新されたファイルを検索する場合
find /etc/ -mtime 5
6日以前に更新されたファイルを検索する場合
find /etc/ -mtime +5
4日以内に更新されたファイルを検索する場合
find /etc/ -mtime -5
サイズがちょうど100キロバイトのファイル・ディレクトリを検索する場合
find . -size 100k
サイズが101キロバイト以上のファイル・ディレクトリを検索
find . -size +100k
サイズが99キロバイト以下のファイル・ディレクトリを検索
find . -size -100k

「コマンド」の指定について

検索したファイルやディレクトリに対し、findコマンドとは別のコマンドを実行することが出来ます。

-print
検索ファイルを表示します。
-ls
検索ファイルを詳しく (ls -lis と同じように) 表示します。
-exec
検索結果のファイル名やディレクトリ名を引数としてコマンドを実行します。「-exec コマンド {} \;」となり、「{}」と「\」の間には必ずスペースを入れます。{}の場所には検索したファイル名が入り、コマンドの引数となります。「;」はコマンドの終了を表すので、シェルに解釈させず、find へ渡すために「\」を付加しエスケープします。
-ok
-exec と同じだが、コマンド実行時に確認されます。

「コマンド」の設定例

ルートディレクトリのtmpを検索してフルパスを表示する場合
find / -name tmp -print
「/usr/local」ディレクトリのファイルを検索して詳細な情報を表示する場合
find /usr/local -type f -ls
「/etc/log」ディレクトリのファイルのうちファイル名が「.log」で終了するファイルを削除する場合
find /etc/log/ -type f -neme “*.log” -exec rm {} \;
スポンサーリンク







シェアする

  • このエントリーをはてなブックマークに追加

フォローする