【初心者向け】findコマンド「ファイル検索」- コピペで試せるオプション理解 -【Linuxコマンド入門 #16】

UBUNTU-linuxコマンド入門シリーズのサムネイル。この記事シリーズでは、よく使うコマンドを優先的に紹介し、シリーズを通して最低限コマンドライン操作ができるようになることを目標に紹介しています。 18 記事
シリーズ

Linuxコマンド入門

LINUXコマンドの基礎について、ゼロから最低限ファイル操作などができるようになるまでの手順を紹介します。linux系な...

前回(#15)は、chmodやsudoについて学び、権限を変える方法について触れました。

chmodコマンドの使い方紹介、また、最高権限sudoについて紹介します。Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介。

【初心者向け】sudoとchmodコマンド「権限変更」- コピペで試せるオプション理解 -【Linuxコマンド入門 #15】

ファイルの権限を変更するには?chmodのオプション、引数についてよく使うものから湯煎的に紹介します。

前回まででファイル操作の基本は習得できたと思います。

lsコマンドで「今いる場所」のファイル一覧は見れるようになりました。しかし、もし「システム全体(あるいは深い階層)から、ある特定のファイルを探し出したい」場合、lsだけでは力不足です。

今回は、広大なLinuxのファイルシステムから、目的のファイルやディレクトリを強力な条件で検索する find コマンドを紹介します。

findコマンドの使い方紹介、Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介しています。

1. find コマンドとは?

findは、ファイルやディレクトリを「検索」するためのコマンドです。

lsが「今いる場所」のファイル一覧しか表示できないのに対し、findは指定した場所から下の階層(サブディレクトリ)をすべて再帰的(さいきてき)にたどり、指定した「条件」に合うものを探し出してくれます。

2. find の基本的な使い方

findの基本的な構文は、他のコマンドと少し異なり、「どこから」「どういう条件で」を指定します。

find [検索開始場所] [条件オプション]

2-1. 名前で検索する (-name)

findの基本は、名前(-name)検索です。エクスプローラーでの検索と同様にファイル名で検索できます。

# 今いる場所(.)から "memo.txt" という名前のファイルを探す
find . -name "memo.txt"
# ./memo.txt
# ./project/backup/memo.txt

あいまい検索

*(アスタリスク)というワイルドカードを使うと、あいまい検索もできます。*は「0文字以上の任意の文字列」を意味します。

# /etc ディレクトリ以下から ".conf" で終わるファイルを探す
$ find /etc -name "*.conf"
/etc/hosts.conf
/etc/resolv.conf
/etc/security/limits.conf
... (大量に出てくる)

【重要】 * を使うときは、findコマンド自身に * を解釈させるため、"*.conf" のように必ず " (クォーテーション) で囲んでください

3. もっと詳しく見る find の便利オプション

findは、-name 以外にも多くの検索条件(「テスト」と呼びます)を持っています。よく使うものを紹介します。

3-1. -type [種類] (ファイルの種類で絞り込む)

findはデフォルトでファイルもディレクトリも両方探します。-typeでどちらか一方に絞ることができます。

  • f : 通常のァイル (File)
  • d : ィレクトリ (Directory)
# "backup" という名前の「ディレクトリ(d)」だけを探す
find . -type d -name "backup"

# ".log" で終わる「ファイル(f)」だけを探す
find . -type f -name "*.log"

3-2. -iname "[パターン]" (大文字小文字を無視する)

-nameignore case(大文字小文字を無視)版です。memo.txtMemo.txtMEMO.TXT も、すべてにヒットさせたい時に使います。

# "report.txt" でも "Report.txt" でも探したい場合
find . -iname "report.txt"

3-3. -mtime [日数] (更新日時で探す)

modification time(最終更新日時)」で検索します。最近更新したファイルや、古いファイルを探すのに便利です。

  • -mtime 0 : 過去24時間以内(0日以内)に更新されたファイル
  • -mtime -7 : 過去7日以内(今日を含む)に更新されたファイル
  • -mtime +30 : 30日より前(31日以上前)に更新されたファイル
# /var/log ディレクトリ以下で、過去24時間以内に更新されたファイルを探す
sudo find /var/log -mtime 0

第16回のまとめ

  • find : 指定した場所から下の階層をたどり、強力な条件でファイルやディレクトリを検索する。
  • find [場所] -name "[パターン]" : findの基本。「名前」で検索する。*" で囲む。
  • find [場所] -type [f/d] : f (ファイル) か d (ディレクトリ) かを指定する。

次回予告

findで「ファイルそのもの」を見つける方法が分かりました。 しかし、「ファイルの中身に、特定の文字列が書かれているか」を調べたい時もありますよね。 次回(#17)は、ファイルの中身から文字列を高速に検索する、grep コマンドを紹介します。

grepコマンドの使い方紹介、Linux Ubuntu初学者向けに、よく使うオプションを優先的に紹介しています。

【初心者向け】grepコマンド「ファイル内から文字列検索」- 特定の行だけ抜き出す -【Linuxコマンド入門 #17】

Linuxのgrepコマンド。ログや設定ファイルから特定の「文字列」を検索する方法を解説。-i(大文字小文字無視)、-n(行番号)、-r(再帰)オプションやパイプ(|)との連携も紹介。

UBUNTU-linuxコマンド入門シリーズのサムネイル。この記事シリーズでは、よく使うコマンドを優先的に紹介し、シリーズを通して最低限コマンドライン操作ができるようになることを目標に紹介しています。 18 記事
シリーズ

Linuxコマンド入門

LINUXコマンドの基礎について、ゼロから最低限ファイル操作などができるようになるまでの手順を紹介します。linux系な...