カテゴリ: Linuxコマンド集 更新日: 2026/08/02

find -regexオプションの使い方|正規表現でファイル名を柔軟に検索する方法

find -regexオプション|正規表現にマッチするファイルを検索する
find -regexオプション|正規表現にマッチするファイルを検索する

先生と生徒の会話形式で理解しよう

生徒

「先生、Linuxのfindコマンドでファイル名を柔軟に検索するにはどうすればいいんですか?」

先生

「そういうときは-regexオプションを使うと便利だよ。正規表現という方法で、特定のパターンに合うファイルを探せるんだ。」

生徒

「正規表現って難しそう…でも便利そうですね!」

先生

「心配いらないよ。わかりやすく一緒にやってみよう!」

1. findコマンドとは?

1. findコマンドとは?
1. findコマンドとは?

findコマンドは、Linuxでファイルやディレクトリを検索する基本的なコマンドです。名前で探したり、更新日時で探したり、大きさで絞ったりと、色んな条件でファイルを見つけられる優れものです。

2. -regexオプションとは?

2. -regexオプションとは?
2. -regexオプションとは?

-regexオプションは、ファイルのパスが正規表現にマッチするかどうかで検索できる機能です。「正規表現(せいきひょうげん)」とは、文字列のパターンを表す記号のようなもので、特定のルールに合った文字列を探し出すために使われます。

例えば「.txtで終わるファイル」「数字で始まるファイル」「英字だけのファイル名」などを柔軟に探すことができます。

3. 正規表現の基本をざっくり解説

3. 正規表現の基本をざっくり解説
3. 正規表現の基本をざっくり解説

初心者向けに、代表的な正規表現の記号をいくつか紹介します。

  • ^:先頭を意味します
  • $:末尾を意味します
  • .*:どんな文字列にもマッチします(何文字でもOK)
  • [0-9]:0〜9の数字にマッチします
  • [a-z]:小文字アルファベットにマッチします

これらを組み合わせることで、かなり柔軟な検索が可能になります。

4. 実際にfind -regexを使ってみよう

4. 実際にfind -regexを使ってみよう
4. 実際にfind -regexを使ってみよう

たとえば、次のようなファイル構成があるとします。


mkdir sampledir
cd sampledir
touch file1.txt file2.txt data1.csv data2.csv image.png

この中から、「.txt」で終わるファイルだけを検索したいとき、次のように-regexオプションを使います。


find . -regex '.*\.txt'
./file1.txt
./file2.txt

ポイント:
findコマンドの-regexは、「ファイル名だけ」ではなく「パス全体」でマッチするかを見ているので、./も含めて正規表現を書く必要があります。

5. 特定のパターンを持つファイルを探す応用例

5. 特定のパターンを持つファイルを探す応用例
5. 特定のパターンを持つファイルを探す応用例

「数字で始まって.txtで終わるファイル」だけを検索したい場合は次のように書けます。


find . -regex '\./[0-9].*\.txt'

また、「拡張子がcsvのファイル」だけを検索するなら次のようになります。


find . -regex '.*\.csv'
./data1.csv
./data2.csv

6. -nameオプションとの違いを理解しよう

6. -nameオプションとの違いを理解しよう
6. -nameオプションとの違いを理解しよう

-nameオプションもファイル名で検索できますが、これは「ワイルドカード(*や?)」による単純な文字列パターンの指定になります。

-regexの方が、もっと複雑で柔軟な検索ができるというメリットがあります。


find . -name "*.txt"
./file1.txt
./file2.txt

このように-nameは簡単で直感的に使えますが、-regexは範囲指定や複雑なパターンに対応できるので、慣れてきたらぜひ使いこなしましょう。

7. 正規表現のエンジンに注意しよう(Emacs式)

7. 正規表現のエンジンに注意しよう(Emacs式)
7. 正規表現のエンジンに注意しよう(Emacs式)

Linuxのfindコマンドで使われる正規表現は「Emacs式正規表現」が基本になっています。これは、PerlやGrepなどで使われる正規表現とは少し違う点もあるので、完全一致が求められる場合などには注意が必要です。

たとえば、全体一致(パス全体にマッチ)なので、.*を冒頭や末尾につけ忘れると結果が出ない場合があります。

8. よく使うfind -regexのパターン例

8. よく使うfind -regexのパターン例
8. よく使うfind -regexのパターン例
  • .*\.log:ログファイルだけ探す
  • \./data[0-9]+\.csv:data0.csv~data9.csvのようなファイル
  • \./[a-z]+\.txt:英字のみのファイル名かつ拡張子がtxt

こうした書き方を覚えておくと、特定のファイルを一瞬で見つけることができるようになります。

関連記事:
カテゴリの一覧へ
新着記事
New1
Linuxコマンドの基本
Linuxのパイプ(|)とは?複数コマンドをつなげて効率化する方法を完全解説
New2
テキスト・データ処理
tailコマンドとは?Linuxでファイルの末尾を表示する基本をやさしく解説!
New3
ファイル・ディレクトリ操作
find -groupオプションの使い方を解説!初心者でもできる所有グループによるファイル検索
New4
圧縮・アーカイブ
rar xオプションの使い方を完全ガイド!Linuxでディレクトリ構造を保持して展開する方法を初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
ファイル・ディレクトリ操作
findコマンドの使い方を完全ガイド!初心者でもわかるLinuxのファイル検索の基本
No.2
Java&Spring記事人気No2
テキスト・データ処理
catコマンドとは?Linuxでファイル内容を表示・連結する基本
No.3
Java&Spring記事人気No3
ファイル・ディレクトリ操作
cd ~ の使い方を完全解説!ホームディレクトリへの移動方法と初心者向けLinuxコマンド入門
No.4
Java&Spring記事人気No4
圧縮・アーカイブ
gzipコマンドの使い方を完全ガイド!初心者でもわかるLinuxでファイル圧縮の基本