このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux基礎:ファイルの検索

ファイルの検索

 Linux システムを利用する上で、膨大な数のファイルの中から目的のファイルを探し出す作業は日常的に発生します。設定ファイルの場所を確認したり、古いログファイルを整理したりするときに効率的な検索ができるかどうかで、管理作業のスピードや精度は大きく変わります。

Linux にはファイルを検索するための代表的なコマンドとして locatefind があります。

  • locate はあらかじめ作成されたデータベースを使って高速に検索できるコマンドです。
  • find はリアルタイムで条件を指定しながら検索できる柔軟性の高いコマンドです。

 ここでは、それぞれのコマンドの特徴や書式、オプション、使用例を取り上げ、効果的に使う方法を解説します。

1.locate コマンド

1.1. 基本概要

 locate はファイル名データベースを利用して検索するため、非常に高速に結果を得られるコマンドです。ただし、データベース更新後に作成されたファイルは検索に反映されません。

書式

locate [検索パターン]

1.2. 使用例

例: ファイル名に "passwd" を含むものを検索

[user@rocky9 ~]$ locate passwd
/etc/passwd
/etc/passwd-
/etc/pam.d/passwd
(省略)

ワイルドカード(*?)を使う場合は、クォートで囲む必要があります。

例: "conf" を含むファイルを検索

[user@rocky9 ~]$ locate '*conf*'
/boot/config-5.14.0-570.17.1.el9_6.x86_64
/boot/config-5.14.0-570.32.1.el9_6.x86_64
/boot/config-5.14.0-570.33.2.el9_6.x86_64
/etc/anthy-unicode.conf
/etc/appstream.conf
(省略)

1.3. データベースの更新

データベースを最新化するには updatedb を利用します(管理者権限が必要)。

[user@rocky9 ~]$ su -
パスワード:
[root@rocky9 ~]# updatedb

2.find コマンド

2.1. 基本概要

 find は指定したディレクトリ以下をリアルタイムに探索し、条件に合うファイルを検索します。ファイル名だけでなく、サイズ・日付・パーミッションなど、さまざまな条件を組み合わせられます。

書式

find [検索対象パス] [検索式]

2.2. 主な検索式と説明

オプション説明使用例
-nameファイル名で検索-name "test*"
-sizeファイルサイズで検索-size +10M(10MB以上)
-atime最終アクセス日で検索-atime -7(7日以内)
-mtime最終修正日で検索-mtime +30(30日以上前)
-permパーミッションで検索-perm 644
-typeファイルタイプ指定-type d(ディレクトリのみ)

2.3. 使用例

例: /usr/bin 以下で "p" で始まるファイルを検索

[root@rocky9 ~]# find /usr/bin -name "p*"
/usr/bin/pic
/usr/bin/pldd
/usr/bin/post-grohtml
(省略)

例: カレントディレクトリ以下で 20KB 未満かつ 1日以内にアクセスされたファイルを検索

[user@rocky9 ~]$ find . -size -20k -atime -1
.
./.bashrc
./.config/dconf/user
./.local/share/gvfs-metadata/home
./.local/share/evolution/addressbook/trash
(省略)

2.4. -exec オプションでの活用

find で見つけたファイルに対して処理を実行できます。

書式

find [検索対象パス] [検索式] -exec コマンド {} \;

例: 1年以上アクセスされていないファイルを削除

[user@rocky9 ~]$ find /home/user/images -atime +365 -exec rm {} \;

3.locate と find の比較

コマンド特徴適した用途
locateデータベース検索のため非常に高速。ただし更新が必要。ファイル名がわかっていて素早く探したいとき
findリアルタイム検索。サイズ・日付・権限など柔軟な条件指定が可能。詳細な条件での検索、更新直後のファイル検索

まとめ

  • ファイル検索には locatefind を使う。
  • locate は高速だがデータベース更新が必要。
  • find はリアルタイムで条件を細かく指定できる柔軟性がある。
  • grep と組み合わせればさらに効率的に絞り込みが可能。
  • システム管理では、locate で手早く検索し、find で精密に検索する、と使い分けるのが効果的。