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

Linux基礎:コマンド練習16

コマンド練習16

 「コマンド練習16」では、6章の前半で登場したコマンドについて 練習問題を通して学びます。ここで扱うのは locateupdatedbfind です。これらはファイル検索に関するコマンドであり、Linux システム管理や日常業務で非常に重要な役割を果たします。

  • locate はデータベースに基づいて高速にファイルを検索します。
  • updatedblocate が利用する検索データベースを更新します。
  • find は実際のディレクトリをたどりながら、柔軟な条件でファイルを検索します。

 ここではこれらのコマンドを 表や図 を交えて詳しく解説し、実際に新しいファイルやディレクトリを作成して練習できる問題を提示します。最後に 「練習+模範解答例」 を掲載します。

コマンド解説

1.locate コマンド

事前に作成されたデータベースを利用して、ファイルを高速に検索します。

書式

locate [検索文字列]

特徴

  • 検索が非常に高速
  • データベースが更新されていないと新しいファイルは見つからない。

2.updatedb コマンド

locate コマンドが利用するデータベースを更新します。

書式

updatedb

特徴

  • 通常は cron により定期的に実行される。
  • 手動で新しいファイルを検索対象にしたい場合に利用

3.find コマンド

ディレクトリをたどりながら、条件に一致するファイルを検索します。

書式

find [検索開始ディレクトリ] [検索条件] [アクション]

主なオプション

オプション説明
-nameファイル名で検索
-typeファイルの種類を指定 (f=通常ファイル, d=ディレクトリ)
-sizeサイズで検索
-user所有者で検索
-exec条件に一致したファイルに対してコマンドを実行

コマンドの使用例

find /home -name "*.txt"

/home 以下から拡張子 .txt のファイルを探す。

練習問題 + 模範解答例

問題1

 カレントディレクトリに新しく notes.txt を作成し、そのファイルを locate コマンドで検索してください。

模範解答例

[user@rocky9 ~]$ touch notes.txt
[user@rocky9 ~]$ sudo updatedb
[sudo] user のパスワード:
[user@rocky9 ~]$ locate notes.txt
/home/user/notes.txt
/usr/share/doc/stix-fonts/STIX_2.0.2_release_notes.txt

問題2

 新しく report1.txtreport2.txt を作成し、locate を利用して "report" を含むファイルを検索してください。

模範解答例

[user@rocky9 ~]$ touch report1.txt report2.txt
[user@rocky9 ~]$ sudo updatedb
[user@rocky9 ~]$ locate report
/etc/libreport
/etc/libreport/events
/etc/libreport/events.d
/etc/libreport/plugins
/etc/libreport/workflows.d
/etc/libreport/events.d/collect_dnf.conf
/etc/libreport/events.d/mdadm_event.conf
/home/user/report.txt
/home/user/report1.txt
/home/user/report2.txt
/home/user/reportA.txt
/home/user/reportB.txt
/home/user/reportC.txt
(省略)

問題3

 ホームディレクトリ直下に projectA ディレクトリを作成し、その中に data1.txtdata2.txt を作成してください。その後、find コマンドを利用して *.txt を検索してください。

模範解答例

[user@rocky9 ~]$ mkdir ~/projectA
[user@rocky9 ~]$ touch ~/projectA/data1.txt ~/projectA/data2.txt
[user@rocky9 ~]$ find ~/projectA -name "*.txt"
/home/user/projectA/data1.txt
/home/user/projectA/data2.txt

問題4

 ホームディレクトリ直下に workdir ディレクトリを作成し、その中に file1.log を作成してください。次に find を使って拡張子 .log のファイルを検索してください。

模範解答例

[user@rocky9 ~]$ mkdir ~/workdir
[user@rocky9 ~]$ touch ~/workdir/file1.log
[user@rocky9 ~]$ find ~/workdir -name "*.log"
/home/user/workdir/file1.log

問題5

find コマンドを使って、ホームディレクトリ以下に存在するディレクトリだけを検索してください。

模範解答例

[user@rocky9 ~]$ find ~ -type d
/home/user
/home/user/.mozilla
/home/user/.mozilla/extensions
/home/user/.mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
/home/user/.mozilla/plugins
/home/user/.mozilla/firefox
(省略)

問題6

 ホームディレクトリ以下にある .txt ファイルを探し、見つかったファイルを cat コマンドで表示してください(-exec を使用)。

模範解答例

[user@rocky9 ~]$ find ~ -name "*.txt" -exec cat {} \;
(省略)
これはリンクの練習用のファイルです。
これはリンクの練習用のファイルです。
2025-08-24 10:00:00 System started
2025-08-24 10:05:00 User logged in
2025-08-24 10:10:00 File updated
これはメモファイルです。
Linuxのコマンド練習に使用します。
DNSメモ:
- /etc/resolve.conf を確認
- nameserver の到達性は ping で確認
3
1
4
1
5
(省略)

まとめ

「コマンド練習16」では、6章の前半で登場したコマンドについて 学びました。

  • locate で高速にファイル検索
  • updatedb で検索データベースを更新
  • find で柔軟な条件検索や処理の自動化

これらを組み合わせることで、Linux システム上での 効率的なファイル探索と管理 が可能になります。