find

Linux


カレントディレクトリの全ファイルの一覧を表示する場合

 find . -type f -print

「/usr/local」「/usr/bin」「/usr/sbin」と3つのディレクトリの全ファイルを表示する場合
find /usr/local /usr/bin /usr/sbin -type f -print


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

検索するファイルやディレクトリを指定します。ワイルドカードとして 「*」「?」「[] 」を使用することができます。ただし、「find」コマンドで、「*」を使用するときは、「”*.txt”」のよう「”」で囲まないとパス名展開され実行エラーとなります。
 -name file


検索するファイル名を指定します。大文字小文字を区別しない以外は -name と同じです。
 -iname file

正規表現を使用した検索をします。パスを含むファイル名全体が正規表現「reg」の検索対象になります。「find」コマンドの検索結果は、「./aaa/bbb/ccc.txt」となるので検索結果に合致した正規表現で検索する必要があります。検索条件を「aaa」としても検索されません。
 -regex reg

大文字小文字を区別しない以外は、-regex と同じです。
 -iregex reg

n日前にアクセスされたファイルを検索します。
 -atime [+-]n

n日前にファイルステータスが変更されたファイルを検索します。ファイルステータスとは、ファイル名、ファイルサイズ、パーミッション、リンク数、オーナー、グループなどのことです。
 -ctime [+-]n

n日前に更新されたファイルを検索します。
 -mtime [+-]n

指定されたファイルの種類で検索します。「find」コマンドで指定できるファイルの種類は、d(ディレクトリ)、f(ファイル)、l(シンボリックリンク)です。
 -type ファイルの種類

指定されたファイルサイズで検索します。サイズの後に「c」を付加するとバイト単位、「k」を付加するとキロバイト単位で検索します。
 -size [+-]n[ck]

所有者がhogeのファイルやディレクトリを検索します。
 -user hoge

パーミッションが755に設定されているファイルやディレクトリを検索します。
 -perm 755

使用例

「/etc/」ディレクトリで、6日前にアクセスされたファイルを検索する場合
find /etc/ -atime 5

「/etc/」ディレクトリで、6日以前にアクセスされたファイルを検索する場合
find /etc/ -atime +5

「/etc/」ディレクトリで、4日以内にアクセスされたファイルを検索する場合
find /etc/ -atime -5

「/etc/」ディレクトリで、5日前にファイルステータスが変更されたファイルを検索する場合
find /etc/ -ctime

「/etc/」ディレクトリで、6日以前にファイルステータスが変更されたファイルを検索する場合
find /etc/ -ctime +5

「/etc/」ディレクトリで、4日以前にファイルステータスが変更されたファイルを検索する場合
find /etc/ -ctime -5

「/etc/」ディレクトリで、5日前に更新されたファイルを検索する場合
find /etc/ -mtime 5

「/etc/」ディレクトリで、6日以前に更新されたファイルを検索する場合
find /etc/ -mtime +5

「/etc/」ディレクトリで、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 {} \;

  • 最終更新:2017-02-13 16:18:41

このWIKIを編集するにはパスワード入力が必要です

認証パスワード