Linux find コマンド
Linux find コマンドは、指定したディレクトリ内のファイルとディレクトリを検索するために使用されます。
さまざまなオプションを使用して、検索結果をフィルタリングしたり制限したりできます。
構文
find [路径] [匹配条件] [动作]
パラメータの説明 :
パスパスは検索するディレクトリのパスです。ディレクトリまたはファイル名を1つ指定できます。複数のパスをスペースで区切って指定することもできます。パスを指定しない場合は、デフォルトで現在のディレクトリになります。
expressionオプションのパラメータで、検索条件を指定するために使用します。ファイル名、ファイルタイプ、ファイルサイズなどを指定できます。
マッチング条件で使用できるオプションは20〜30個もあります。以下に最も一般的なものを示します。
-name pattern:ファイル名で検索します。ワイルドカードを使用できます。*と?。-type type:ファイルタイプで検索します。次のものを指定できます。f(通常ファイル)、d(ディレクトリ)、l(シンボリックリンク)など。-size [+-]size[cwbkMG]:ファイルサイズで検索します。次のものを使用できます。+或-指定サイズより大きいか小さいかを表します。単位は次のものを使用できます。c(バイト)、w(単語数)、b(ブロック数)、k(KB)、M(MB)またはG(GB)。-mtime days:変更時刻で検索します。次のものを使用できます。+或-指定した日数の前または後を表します。days は日数を表す整数です。-user username:ファイル所有者で検索します。-group groupname:ファイルの所属グループで検索します。
アクション:オプションで、マッチしたファイルに対して削除やコピーなどの操作を実行するために使用します。
find コマンドで時間に関連するパラメータは次のとおりです:
-
-amin n:n 分以内にアクセスされたファイルを検索します。 -
-atime n:n*24 時間以内にアクセスされたファイルを検索します。 -
-cmin n:n 分以内にステータスが変更されたファイル(例:パーミッション)を検索します。 -
-ctime n:n*24 時間以内にステータスが変更されたファイル(例:パーミッション)を検索します。 -
-mmin n:n 分以内に変更されたファイルを検索します。 -
-mtime n:n*24 時間以内に変更されたファイルを検索します。
これらのパラメータでは、n は正の数、負の数、またはゼロにできます。正の数は指定した時間内に変更またはアクセスされたファイルを表し、負の数は指定した時間より前に変更またはアクセスされたファイルを表し、ゼロは現在の時点で変更またはアクセスされたファイルを表します。
正の数は時間より前を表し、負の数は時間以内を表します。
例:-mtime 0今日変更されたファイルを検索することを示します。-mtime -71週間より前に変更されたファイルを検索することを示します。
時間 n パラメータに関する説明:
+n:n 日より前のファイルまたはディレクトリを検索します。
-
-n:n 日以内に属性を変更したファイルまたはディレクトリを検索します。
-
n:n 日前(指定した日)に属性を変更したファイルまたはディレクトリを検索します。
例
現在のディレクトリ内の file.txt という名前のファイルを検索する:
find . -name file.txt
現在のディレクトリとそのサブディレクトリ内のすべてのファイルについて、拡張子が.cであるファイルを一覧表示します:
# find . -name "*.c"
現在のディレクトリとそのサブディレクトリ内のすべてのファイルを一覧表示します:
# find . -type f
/home ディレクトリ内の 1MB より大きいファイルを検索する:
find /home -size +1M
/var/log ディレクトリ内の 7 日前に変更されたファイルを検索する:
find /var/log -mtime +7
過去 7 日以内にアクセスされたファイルを検索する:
find /path/to/search -atime -7
現在のディレクトリ内で、直近 20 日以内にステータスが変更されたファイルとディレクトリを検索する:
# find . -ctime 20
現在のディレクトリとそのサブディレクトリ内の、20 日以前およびそれより前に更新されたすべてのファイルを一覧表示します:
# find . -ctime +20
/var/log ディレクトリ内の変更日時が 7 日より前の通常ファイルを検索し、削除する前にそれらを確認します:
# find /var/log -type f -mtime +7 -ok rm {} \;
現在のディレクトリ内で、ファイル所有者が読み取り・書き込み権限を持ち、ファイルの所属グループのユーザーとその他のユーザーが読み取り権限を持つファイルを検索する:
# find . -type f -perm 644 -exec ls -l {} \;
システム内のすべてのファイル長が 0 の通常ファイルを検索し、それらの完全なパスを一覧表示します:
# find / -type f -size 0 -exec ls -l {} \;
検索して操作(例:削除)を実行する:
find /path/to/search -name "pattern" -exec rm {} \;
この例では、-execオプションを使用するとコマンドを実行でき、{}マッチしたファイル名に置き換えられ、\;コマンドの終了を表します。
その他の拡張