Linuxファイル検索の極意

Linuxファイル検索の極意

散らばったファイルを見つけ出す

Linuxでファイル操作をしていると、「あのファイルはどこに置いたっけ?」と困ることがあります。ディレクトリ構造が深くなるほど、目当てのファイルを手動で探すのは非効率です。そんなときに活躍するのが、Linuxに標準搭載されている強力な検索コマンド find です。

find は単純なファイル名検索から、日時・サイズ・パーミッション・所有者による複合条件検索まで幅広く対応しており、一度使い方をマスターすれば日々の管理作業が格段に効率化されます。詳細な仕様は GNU findutils 公式マニュアル で参照できます。

findコマンドの基本

例えば、特定のディレクトリ以下にあるすべての.logファイルを探したいなら、こんな感じでOKなんです。

find /var/log -name "*.log"

これだけで、指定したパス(この例だと/var/log)配下にある、ファイル名が.logで終わるファイルを全部リストアップしてくれるんです。シンプルですが、非常に便利ではないでしょうか。

応用的な検索テクニック

さらにfindコマンドのすごいところは、ただファイル名で検索するだけじゃないということ。ファイルの種類、サイズ、更新日時、パーミッション、果ては所有者まで、いろんな条件で絞り込みができるんです。例えば、今日更新されたファイルだけを探したいなら-mtime 0を使ったり、特定のサイズのファイルだけを探したいなら-sizeオプションを使ったり。

# 過去7日以内に変更された、サイズが10MBより大きい.confファイルを探す例
find /etc -type f -name "*.conf" -mtime -7 -size +10M

どうですか?すごいでしょう?当初はこんな複雑なことできるのかと感動しました。

他の検索コマンドとの使い分け

もちろん、もっと手軽にファイルを探したいならlocateコマンドも便利です。これは事前にデータベースを作成しておく必要があるのでリアルタイム性には欠けますが、その分検索が非常に速いのが特徴です。あとは、特定のコマンドがどこにあるか知りたいならwhichコマンドを使うのが手っ取り早いですね。

それぞれのコマンドの特性を理解して使い分けることで、作業効率は格段に上がります。基本的なファイル操作の知識に find コマンドの応用テクニックを組み合わせることで、日々のLinux管理作業がより快適になります。locate コマンドのデータベース更新には updatedb を使用し、その動作の詳細は locateのmanページで確認できます。