【Linux】カレントディレクトリ配下のファイルから文字列を検索するコマンド

20200702-1 プログラミング

Windows上でテキストエディタで文字列検索するには、エディタメニューをクリックするだけで簡単にできますが、Linux環境では全てコマンドで行います。
文字列を検索する場合には「find」コマンド、「xargs」コマンドと「grep」コマンドを利用します。
代表的な例を用いて説明します。


カレントディレクトリ配下の拡張子「*.c」、「*.h」ファイルから文字列「ABC」を検索するコマンド

以下のコマンドは、カレントディレクトリ配下の拡張子「*.c」、「*.h」ファイルから文字列「ABC」を検索するコマンドです。
このコマンドについて、それぞれ解説します。

find△.△-type△f△-name△*.[ch]△|△xargs△grep△-n△ABC

△は、スペースです。



findコマンド

findコマンドは、ファイルを検索するコマンドです。

 .  

上記のドットはカレントディレクトリを意味し、カレントディレクトリ配下のファイルを検索します。
ここでは、検索するディレクトリを明確に(/homeなど)指定してもOKです。

 -type△f 

検索対象のタイプを指定します。
「f」はファイルです。
指定しないとディレクトリも検索しますので「grep: ./sh: ディレクトリです」などと表示します。

 -name△*.[ch] 

検索するファイル名を指定します。
ここでは、拡張子「*.c」と「*.h」のファイルを検索します。
-type」オプションでファイルを指定していますので省略は可能です。



|(パイプ)

「パイプ」とは、「コマンドの入出力をコマンドへ引き渡す処理」のことをさします。
この場合、findで検索した以下のような検索結果を次のコマンド(xargs)に渡します。

【Linux】カレントディレクトリ配下のファイルから文字列を検索するコマンド


xargs(エックスアーグズ)コマンド

「xargs」は、「標準入力やファイルからリストを読み込み、コマンドラインを作成して実行する」というコマンドです。
この場合、パイプで受け取った検索結果を次のコマンド(grep)に引数として渡します。

【Linux】カレントディレクトリ配下のファイルから文字列を検索するコマンド


grep(グレップ)コマンド

文字列(ここではABC)を検索します。
-nオプションはファイル内の行番号を表示します。



まとめ

文字列検索の代表的な例を説明しました。
find、xargs、grepコマンドはそれぞれオプションがありますので様々な検索が可能です。
Linuxコマンド一覧を見て、いろいろ試してみてください。