Linuxで使う検索コマンド4選|効率的に検索するには順番が大切な話

Linuxを勉強したい人向け

 この記事は、Linux初心者向けの記事です。

こんにちは。

普段はIT業界についてのブログを執筆してるエンジニアです。
» 参考:プログラマーの年収は200万円以下です【IT業界の残酷な成功法則】

今回は、Linuxについての解説記事です。

Linuxで検索コマンドを勉強する人

Linuxを勉強する人「Linuxで検索をするときに使うコマンドを覚えたい。どのコマンドとどのコマンドが検索に使うコマンド?」

こんな疑問に答えます。

本記事では、Linuxの検索に使うコマンドを4つ紹介します。

検索といっても目的や対象はさまざま。そこで検索につかうコマンド4つと、検索したいときにどのコマンドをどの順番で使う検討をすれば良いか解説します。

効率的な検索には順番があります

この順番にこだわるのは、findコマンドを使うのを極力避けたいからです。

findコマンドは非常に便利なのですが、探していないファイルも大量にマッチしてしまったり、検索に時間がかかってしまうことも多く、極力使うのを避けたいからです。

そのため本記事では使う順番に沿って①〜③、さらにfindコマンドという順序で使い方を解説していきます。

テキストファイルの中を検索するときのgrepコマンド

テキストファイルの中を検索するときのgrepコマンド

構文

grep 《検索文字列》 《検索するファイル名》

file1.txtというテキストファイルの中から、”test“という文字列を検索して表示する例です。

$ grep text file1.txt

実行結果は以下の通りです。
[実行結果]

This is grep test.
And this test is succeed.

同様に、file2.txtというテキストファイルの中から、”test“という文字列を検索します。

$ grep text file2.txt

見つからなければ、何も表示されません。
[実行結果]

 

どこかに”text“という文字が入ったファイルがあるはずなんだけど見つからない!という場合はfindコマンドで探します。
後ほどfindコマンドの項目で具体例をベースに解説します。

実行プログラムを検索するときのwhichコマンド

実行プログラムを検索するときのwhichコマンド

構文

which 《探している実行プログラム名》

pythonのプログラムがどこにあるか検索するときは以下のようにします。

$ which python

実行結果は以下の通りです。パスを取得することができました。
[実行結果]

/usr/bin/python

ただし、whichでは環境変数$PATHに設定された場所しか検索ができません。

$ which open.sh

実行プログラムでも、環境変数に設定されていない場所にある場合にはエラーになってしまいます。
[実行結果]

open.sh not found

実行プログラムがwhichコマンドで見つからない場合は、次のlocateコマンドで探します。

データベースからファイルを検索するlocateコマンド

データベースからファイルを検索するlocateコマンド

構文

locate 《探しているファイル名》

locateコマンドはファイル情報をデータベースに格納し、そこから対象のファイルを検索するコマンドです。

$ locate open.sh

実行結果は以下の通りです。
[実行結果]

/home/user01/bin/open.sh

好きな場所からファイルを検索するfindコマンド

好きな場所からファイルを検索するfindコマンド

構文

grep 《検索元ディレクトリ》 -name “《探しているファイル名》”

grep,which,locateコマンドを使ってもファイルやディレクトリが見つからない場合にはfindコマンドを使います。次の例では、拡張子が”.sh“の全てのファイルを検索します。

$ find . -name "*.sh"

実行結果は以下の通りです。
[実行結果]

./bin/open.sh
./bin/news.sh

最初のgrepの例で文字列が見つからなかった場合、次のようにfindコマンドで複数のファイルから検索することができます。

構文

find 《検索元ディレクトリ》 -exec grep 《検索文字列》 {} +

現在のディレクトリ配下のファイルの中身から、”test“という文字列を検索して表示する例です。

$ find . -exec grep test {} + 2> /dev/null

実行結果は以下の通りです。いろいろなファイルから”test“という文字列が見つかりました。
[実行結果]

./file1.txt:This is grep test.
./file1.txt:And this test is succeed.
./file3.txt:test.
./SQL/file.sql: "good" ELSE "bad" END FROM test;
./temp/file.sh:echo $test

おわりに

今回は以上です。Linuxで検索につかうコマンドを4つ紹介し、効率的に検索する順番について解説しました。

参考になりましたら幸いです。

Blog TOP  Linuxコマンドを勉強したい人向け|Linuxの使い方 記事まとめ

Linux&Linuxコマンドを勉強したい人向けの記事もくじ

用語解説・技術一般

  "UNIXとLINUX"の違いについて解説します
  CUIとGUIの違い・特徴について解説します

サーバリソースを確認するコマンドの使い方

  【Linux】CPU使用率を確認する3つの方法を解説します
  【Linux】topコマンドで,CPU消費の原因を特定する方法
  【Linux】ps実行時に-efオプションを付ける理由について
  【Linux】メモリ使用率を確認する|容量・空きの確認も
  【Linux】ディスク容量を確認する|ディスク容量監視も

ファイル操作に関するコマンドの使い方

  【Linux】ファイルの行数をカウントする方法を解説
  【Linux】文字コード変換ならiconvコマンド1択です
  【Linux】/dev/nullを、エンジニアが使う2つの目的
  【Linux】findのexecオプションの使い方とその注意点
  【Linux】findの結果から圧縮ファイルを作るコマンド
  【Linux】hostsの場所はどこ?→/etc/hostsにあります
  【Linux】touchコマンドで,時刻更新&空ファイル作成

Linux管理者用コマンドの使い方

  【Linux】再起動コマンド(shutdown)の使い方と注意点

よく使う便利なコマンドの使い方

  【Linux】改行なしでechoコマンドを使う時の -nオプション
  【Linux】sleepコマンドの使用例と注意点について解説する
  【Linux】rmコマンドでディレクトリを削除する方法を解説
  【Linux】ファイルを削除するコマンド2選【rm以外もあり】
  【Linux】awkの区切り文字を指定する,-Fオプションを解説
  【Linux】sedで文字列の置換をするeオプションを解説する
  【Linux】dateコマンドのフォーマットとその便利な使い方
  【Linux】大文字から小文字に変換する方法【小文字から大文字も】

シェルの便利機能

  【Linux】コマンド履歴を検索する【Ctrl+r】