Linuxでのファイル検索方法を解説!便利なコマンドや手順も紹介

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年4月)

✔当記事はこのような方に向けて書かれています

「特定のファイルを検索したい」

「正確なファイル名がわからないので、関連情報を含むキーワードで検索できるの?」

「Linuxにおけるファイル検索の方法について知りたい」

✔当記事の主な内容は以下のとおり

  • Linuxファイル検索の基本的なコマンドの紹介
  • 便利なオプションやツールの活用法の解説
  • 実践的な具体例を用いた手順やヒントの提供

当記事では、ファイル検索の基本についてはもちろん、初心者の方でもわかりやすいよう、具体的な使い方や便利なオプションなど、ファイル検索についてより詳しく解説しています。

ぜひ最後までご覧ください。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロダクトマネージャー

【副業】ブログ(月間20万PV)/YouTube/Web・アプリ制作

「プログラミング × ライティング × 営業」の経験を活かし、30後半からのIT系職へシフト。現在はプロダクトマネージャーとして、さまざまな関係者の間に入り奮闘してます。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

Linuxでのファイル検索における基礎知識

Linuxでのファイル検索について、最低限知っておくべき基本的なことをご覧ください。

いろいろな使い方まで知らなくても、ファイル検索は可能です。

  • なぜLinuxでのファイル検索が重要?
  • ファイル検索で使える3つのコマンドを簡単に解説
  • 検索対象となるディレクトリの指定方法
  • 複数の条件を組み合わせた高度なファイル検索方法

なぜLinuxでのファイル検索が重要?

LinuxOSは、さまざまな用途で使われていて、必ずしもGUIがあるとは限りません。

リモートサーバーやLinuxのディストリビューションによっては、デスクトップなどでの操作ができない場合もあるのです。

その中で、特定のファイルを見つけるためには、Linuxのファイル検索を使う必要があります。

ファイル検索の特徴として、以下を覚えておきましょう。

  • 検索範囲が非常に広い
  • リアルタイムでの結果表示
  • 特定の拡張子のファイルだけを検索
  • 特定の文字列を含むファイルのみを検索

高機能な検索が簡単に使えるLinuxのファイル検索は、作業効率の向上において、大きな役割を果たしています。

ファイル検索で使える3つのコマンドを簡単に解説

ファイル検索で使える3つのコマンドを見ていきましょう。

まずはどんなものがあるのかがイメージできれば、ファイル検索が簡単なことも理解いただけるはず。

  • findコマンド
  • grepコマンド
  • locateコマンド

1. findコマンド

findコマンドは、特定の条件に合致するファイルを再帰的に検索できます。

使用例としては、以下のとおり。

find / -name itc.txt

ルートディレクトリからitc.txtファイルを探します。

-typeオプションを使えば、ファイル種類の指定も可能です。

詳しくはこちらで解説しています。

2. grepコマンド

grepコマンドでは、ファイル内で指定した文字列を検索できます。

以下が一例です。

grep 'keyword' itc.txt

itc.txtファイル内で’keyword’という文字列を検索します。

-rオプションを使えば、ディレクトリ内の全ファイルを再帰的に検索できます。

詳しくはこちらで解説しています。

3. locateコマンド

locateコマンドは、ファイル名の部分一致でファイルが検索が可能。

locate itc_test

ファイル名に’itc_test’を含むファイルを検索します。

事前にファイル名のデータベースを更新したうえでおこないましょう。

検索対象となるディレクトリの指定方法

検索対象となるディレクトリの指定は、以下のような2ステップで完了します。

  1. ディレクトリパスの確認
  2. コマンドの入力

ディレクトリパスの確認

まずは検索対象となるディレクトリの場所を確認します。

Linuxでは「/」以下にフォルダが配置されていることが多いため、この中から検索することがほとんどです。

コマンドの入力

ディレクトリが確認できたら以下のコマンドを入力します。

find [指定したいディレクトリ] -type [ファイルの種類] -name [検索したいファイル名]

例えば、デスクトップ上に配置されたファイルを検索したい場合、以下のようにコマンドを入力します。

$ find ~/Desktop -type f -name itc.txt

「~」はホームディレクトリを表します。検索対象となるディレクトリを指定する際に、ホームディレクトリからの相対パスでも指定できますよ。

複数の条件を組み合わせた高度なファイル検索方法

Linuxでのファイル検索は、複数の条件を組み合わせて、高度なファイル検索も可能。

端末(ターミナル)上でfindコマンドとgrepコマンドなどを組み合わせてる例はこちらです。

find . -name '*.txt' -exec grep -l 'keywordA' {} \; -exec grep -l 'keywordB' {} \;

このコマンドは、現在いるディレクトリから「*.txt」で終わるファイルを探し、grepコマンドで「keywordA」と「keywordB」が含まれるファイルの名前を出力します。

さらに、検索条件に規模や更新日時などの条件まで加えられます。

たとえば100MB以上のサイズで、1週間以内に更新された「*.conf」ファイルを検索するには以下のようにします。

find . -name '*.conf' -size +100M -mtime -7

findコマンドによるファイル検索方法

findコマンでの検索について、詳しく見ていきます。

findコマンドで検索するにもポイントがあるのです。

  • findコマンドの基本的な使い方
  • findコマンドのオプション
  • findコマンドでファイル名やファイル属性、ファイル内容を検索する方法
  • findコマンドの結果を他コマンドにパイプして処理する方法

findコマンドそのものについて詳しく知りたい方はこちら。

findコマンドの基本的な使い方とオプション

findコマンドは、Linuxにおいてファイル検索をおこなうもので、基本的な構文は以下のとおり。

find <検索対象のディレクトリ> <検索条件>

検索条件は以下のように指定できます。

  •  -name <ファイル名>:ファイル名が一致するファイルを検索
  • -type <ファイルタイプ>:ファイルタイプ(ファイル、ディレクトリなど)で検索
  • -mtime <日数>:最終更新日から指定した日数以内に更新されたファイルで検索

具体例として、~/Download以下で、ファイル名に「itc」が含まれ、最終更新日が1日以内のファイルを検索してみます。

find ~/Download -name ""*itc*"" -mtime -1 -type f

findコマンドでファイル名やファイル属性、ファイル内容を検索する方法

findコマンドを使って、具体的にファイル名や属性、内容を検索してみます。

以下の手順で検索をおこないます。

1. 検索範囲を指定する

findコマンドの基本的な構文は「find [検索範囲] [検索条件] [アクション]」です。

最初に検索範囲を指定するのです。

例えば、/home/linuxuserディレクトリ以下のファイルを対象とする場合は、「/home/linuxuser」と指定します。

2. 検索条件を指定する

次に、検索条件を指定します。

例えば、ファイル名が「itc.txt」であるファイルを対象とする場合は、「-name itc.txt」と指定します。

他にも、ファイルの更新日時やサイズなど、いくつかの条件を組み合わせることも可能。

複数の条件を指定する場合は、それらを丸括弧で括り、「-a」オプション(論理積)や「-o」オプション(論理和)で結合するのです。

3. アクションを指定する

最後に、検索結果に対するアクションを指定します。

例えば検索結果を表示する場合は、「-print」と指定します。また、特定のファイルを削除する場合は、「-delete」と指定します。

findコマンドの結果を他コマンドにパイプして処理する方法

findコマンドは、検索したファイルをそのまま表示するだけではなく、他のコマンドと組み合わせて、より複雑な検索が可能です。

ここではfindコマンドの結果を他のコマンドにパイプして処理する方法をお伝えします。

$ find ~/Documents -name "*.txt" -type f | grep "itc"
/home/yulikepython/Documents/itcdir/itc_zipped.txt
/home/yulikepython/Documents/itcdir/diffar/first/infirst.txt
/home/yulikepython/Documents/itcdir/diffar/second/insecond.txt
/home/yulikepython/Documents/itcdir/itc2.txt
/home/yulikepython/Documents/itcdir/itc.txt

もしくは下のように「wc」コマンドを使用して、検索結果の行数や単語数をカウントすることもできます。

$ find ~/Documents/itcdir -name "*.txt" -type f | xargs wc -l
  1 /home/yulikepython/Documents/itcdir/itc_zipped.txt
  2 /home/yulikepython/Documents/itcdir/diffar/first/infirst.txt
  4 /home/yulikepython/Documents/itcdir/diffar/second/insecond.txt
  3 /home/yulikepython/Documents/itcdir/itc2.txt
 28 /home/yulikepython/Documents/itcdir/itc.txt
 38 合計

wcコマンドは行数や単語数をカウントできるもので、詳しく知りたい方はこちらをどうぞ。

xargsコマンドは、検索結果を空白文字で分割して、複数の引数として渡すために利用されます。

findコマンドの結果を他のコマンドにパイプして処理すれば、効率的にファイル操作をおこなえます。

今後の作業に活用してみましょう。

locateコマンドによるファイル検索方法

locateコマンドでもファイル検索は可能です。

ひとつのやり方として、locateコマンドについても見ていきましょう。

  • locateコマンドの基本的な使い方
  • locateコマンドのオプション
  • locateコマンドで高速にファイルを検索する方法
  • locateコマンドのデータベースを更新する方法

locateコマンドの基本的な使い方

locateを利用すると、指定したファイル名や作成日時などの条件に合致するファイルを瞬時に検索できます。

具体的な使い方は以下のとおり。

locate [検索したいファイル名・パターン]

もし、「locateがt見つかりません」というエラーが出てしまう場合は、以下のコマンドでインストールしましょう。

sudo apt install mlocate

例として、「access」という単語付を含むファイルを探してみます。

$ locate /etc/*access*
/etc/apache2/conf-available/other-vhosts-access-log.conf
/etc/apache2/conf-enabled/other-vhosts-access-log.conf
/etc/apache2/mods-available/access_compat.load
/etc/apache2/mods-enabled/access_compat.load
/etc/apparmor.d/abstractions/dbus-accessibility
/etc/apparmor.d/abstractions/dbus-accessibility-strict
/etc/brltty/Contraction/latex-access.ctb
/etc/java-11-openjdk/accessibility.properties
/etc/java-11-openjdk/management/jmxremote.access
/etc/security/access.conf

かなり高速で検索ができたのではないでしょうか?

locateコマンドのオプション

locateコマンドのオプションについても見てみましょう。

代表的なものは以下のとおりです。

  • -r:正規表現を使用してファイルを検索
  • -q:locateが出力するエラーメッセージを抑止
  • -i:大文字・小文字を区別せずに検索

オプションを効果的に使用することで、Linux上でのファイル検索をより効率的かつ正確におこなえます。

locateコマンドが高速に検索できる理由

locateコマンドは非常に高速です。

その理由は、ファイルシステム全体をスキャンするのではなく、データベースによるインデックス検索をおこなっているからです。

また、データベースによる検索により、正規表現を用いたパターンマッチングで、より柔軟な検索が可能。

ただしデータベースはリアルタイムで同期されているわけではないので、新しいファイルが反映されないこともあります。

もし新しいファイルも反映させたいのであれば、updatedbコマンドで手動更新をおこなわなければなりません。

locateコマンドのデータベースを更新する方法

locateコマンドでは、事前にデータベースを更新する必要があります。

データベースを更新しないと、新しいファイルが作成された際に、検索できない場合があるからです。

データベースの更新方法は簡単で、以下のコマンドを入力します。

sudo updatedb

このコマンドを入力することで、システム内の全てのファイル・ディレクトリの情報がデータベースにk書き込まれるのです。

更新処理には数分程度かかるものの、その後におこなうファイル検索はスムーズになります。

whereisコマンドによるファイル検索方法

whereisコマンドによるファイル検索方法もご紹介します。

whereisコマンドを使うと、プログラムファイルなどのパスが簡単に探せるのです。

  • whereisコマンドの基本的な使い方
  • whereisコマンドのオプション
  • whereisコマンドでコマンドやライブラリの場所を検索する方法
  • whereisコマンドと他のコマンドを組み合わせた応用的な使い方

whereisコマンドの基本的な使い方

whereisコマンドによる検索方法は以下のとおり。

whereis [検索したいファイルの名前]

たとえば、pythonパッケージのパスを確認したいときはこのようになります。

$ whereis python
python: /usr/bin/python3.8 /usr/bin/python /usr/bin/python2.7-config /usr/bin/python3.8-config /usr/bin/python2.7 /usr/lib/python3.8 /usr/lib/python3.9 /usr/lib/python2.7 /etc/python3.8 /etc/python2.7 /usr/local/lib/python3.8 /usr/local/lib/python2.7 /usr/include/python3.8 /usr/include/python2.7 /usr/share/python /home/yulikepython/.pyenv/shims/python3.10 /home/yulikepython/.pyenv/shims/python /home/yulikepython/.pyenv/shims/python3.10-config

また、Whereisコマンドは、複数のファイルを検索することも可能です。

whereis [検索したいファイルの名前1] [検索したいファイルの名前2]

$ whereis python php
python: /usr/bin/python3.8 /usr/bin/python /usr/bin/python2.7-config /usr/bin/python3.8-config /usr/bin/python2.7 /usr/lib/python3.8 /usr/lib/python3.9 /usr/lib/python2.7 /etc/python3.8 /etc/python2.7 /usr/local/lib/python3.8 /usr/local/lib/python2.7 /usr/include/python3.8 /usr/include/python2.7 /usr/share/python /home/yulikepython/.pyenv/shims/python3.10 /home/yulikepython/.pyenv/shims/python /home/yulikepython/.pyenv/shims/python3.10-config
php: /usr/bin/php7.4 /usr/bin/php /usr/lib/php /etc/php /usr/share/php7.4-json /usr/share/php7.4-readline /usr/share/php7.4-opcache /usr/share/php7.4-zip /usr/share/php7.4-mbstring /usr/share/php7.4-curl /usr/share/php7.4-mysql /usr/share/php7.4-intl /usr/share/php7.4-gd /usr/share/php7.4-xml /usr/share/php7.4-soap /usr/share/php7.4-common /usr/share/php7.4-xmlrpc /usr/share/man/man1/php.1.gz

whereisコマンドのオプション

whereisコマンドの代表的なオプションはこちらです。

  • -bオプション :コマンドの実行ファイルのみを探す
  • -mオプション:検索する場所を手動で指定
  • -uオプション:キャッシュを更新
  • -fオプション :パス名の代わりに実行ファイルやマニュアルファイルの名前のみを表示
  • -Vオプション:whereisコマンドのバージョン情報を表示

オプションを使いこなすことで、デフォルトには備わっていない機能が使えます。

whereisコマンドでコマンドやライブラリの場所を検索する方法

whereisコマンドでは、指定されたファイルの実行可能ファイル、ソースコード、マニュアルページが格納されている場所を検索します。

whereisコマンドを使用してコマンドやライブラリの場所を検索するには、次のようにコマンドを入力します。

whereis [オプション] [検索するファイル]

例えば、Apacheの実行可能ファイルやマニュアルページの場所を検索する場合、次のように入力します。

whereis apache

whereisコマンドは、指定されたファイルがある場所を迅速に検索することができますが、ファイルシステムを網羅的に検索しないため、検索結果が正確ではない場合があります。

目的に合わせて使用しましょう。

whereisコマンドと他のコマンドを組み合わせた応用的な使い方

whereisコマンドはほかのコマンドと合わせることで、より効果的に使えます。

  • whichコマンド
  • findコマンド
  • grepコマンド

whichコマンドと組み合わせる

whichコマンドは、指定されたコマンドの場所を検索するために使用されます。

whereisコマンドと組み合わせれば、指定されたコマンドの場所をさらに詳しく調べることができます。

例えば、以下のコマンドは、whichコマンドでlsコマンドの場所を特定し、whereisコマンドを使用して、lsコマンドのバイナリ、マニュアル、およびソースの場所を確認する方法です。

$ which ls
/usr/bin/ls

$ whereis -b -m -s ls
ls: /usr/bin/ls /usr/share/man/man1/ls.1.gz

findコマンドと組み合わせる

findコマンドは、指定された条件に一致するファイルを検索するために使用されます。

whereisコマンドと組み合わせれば、特定のファイルの場所を検索できます。

例えば以下のコマンドは、/usr/share/manディレクトリ内で、gzip形式のマニュアルページファイルを検索し、whereisコマンドを使用してその場所を確認する方法です。

$ find /usr/share/man -type f -name '*.gz' | xargs whereis
kbookmarkmerger.1: /usr/share/man/man1/kbookmarkmerger.1.gz
wireless.7: /usr/share/man/man7/wireless.7.gz
iwevent.8: /usr/share/man/man8/iwevent.8.gz
iwlist.8: /usr/share/man/man8/iwlist.8.gz

grepコマンドと組み合わせる

grepコマンドは、指定されたパターンに一致する行を検索するためのもの。

whereisコマンドと組み合わせることで、特定のパスから特定のファイルのみを検索できます

たとえば、/usr/bin/以下にある、”zip”という文字列が含まれるコマンドを検索したい場合は、以下のようなコマンドを使用できます。

$ whereis zip | grep "/usr/bin"
zip: /usr/bin/zip /usr/share/man/man1/zip.1.gz

grepのフィルタリング機能をうまく活用しましょう。

grepコマンドによるファイル検索方法

grepコマンドによるファイル検索も知っておくと便利です。

grepはほかのコマンドと組み合わせても使える便利なコマンドです。。

  • grepコマンドの基本的な使い方
  • grepコマンドのオプション
  • grepコマンドで文字列や正規表現を使ってファイルを検索する方法
  • grepコマンドと他のコマンドとの組み合わせ

grepコマンドの基本的な使い方

grepコマンドでは、特定の文字列を含むファイルや行を検索したり、正規表現を用いてパターンを検索したりできます。

grep [検索ワード] [検索対象ファイル名]

例えば、/var/www/htmlディレクトリ以下のファイルから、”hello”という文字列を検索する場合は、以下のようにコマンドを入力します。

grep "index" /var/www/html/*

詳しい使い方はこちらの記事でも解説しています。

grepコマンドのオプション

grepコマンドのオプションを使うことで、より精密にファイル検索が可能。

  • -r:再帰的に検索する場合に利用
  • -i:大文字小文字を区別せずに検索する場合に利用
  • -E:細かな検索条件を指定
  • -v:検索結果に含まれない文字列を指定

いろいろと使いこなせれば、より効率が上がります。

grepコマンドで文字列や正規表現を使ってファイルを検索する方法

具体的なgrepコマンドの使い方はこちら。

grep “検索文字列” ファイル名

検索文字列で、検索したい文字列を指定。

ファイル名に、検索対象のファイル名を入力します。

指定したファイル名に含まれるすべての行から、検索文字列に一致するものが検索されるのです。

また正規表現でも以下のとおりの構成となります。

grep -E “正規表現” ファイル名

-Eオプションを使用することで、正規表現を使用した検索が可能になります。

具体例をご覧いただきます。

#appleを探す
grep -E "^apple" itc_fruits.txt

#dogを探す
grep -E "\bdog\b" itc_pets.txt

#数値が含まれる行を探す
grep -E ""[0-9]"" ファイル名

grepコマンドと他のコマンドとの組み合わせ

grepコマンドは、ほかのこまんどと組み合わせで使われることも多いです。

その理由はほかのコマンドにはない機能をもっているから。

例えばfindコマンドとの組み合わせでは、指定したディレクトリ配下のすべてのファイルから文字列の検索ができます。

find ~/ -type f -exec grep "python" {} \;

grepコマンドとsedコマンドを組み合わせることで、テキストファイル内の文字列の置換も可能。

sed -i 's/検索したい文字列/置換したい文字列/g' ファイル名 | grep ""置換したい文字列""

まとめ:Linuxのファイル検索で作業効率を上げよう

当記事の内容をまとめます。

  • Linuxのファイル検索に使えるコマンドはたくさんある
  • 複数のコマンドを組み合わせればより精密な検索ができる
  • それぞれの特徴をおさえて場面によって使い分けよう

Linuxでは、さまざまなコマンドで、ファイル検索が可能。

ただしそれぞれのコマンドには、特徴があります。

特徴をおさえたうえで、コマンドを使用したり、ときには組み合わせながら試したりしてみてください。

タイトルとURLをコピーしました