【Linux】ファイルの内容を検索するコマンド find + grep

Linuxサーバーにあるファイルを検索

ファイル名を指定してLinuxサーバー内にあるファイルの検索は find コマンドで可能です。

ファイル名を指定して検索

nameオプションを使用します。ファイル名はダブルクオーテーションで囲みます。

$ find 場所 -name "ファイル名"

ワイルドカードが使用できます

$ find . -name "*.txt"

否定の論理演算子を使用し、指定した条件ファイル名に該当しないものを検索します。

$ find . ! -name "*.txt"

検索する文字列が含まれるファイルを検索する方法

まず、ファイルに含まれる文字を検索する場合にもちいるコマンド grep を説明します。

$ grep PATTERN ファイル名

上記grepコマンドは、検索文字列PATTERNが 指定したファイル名のどこに存在するかを検出します。

検索する文字列が含まれるファイルを検索する方法は、find コマンドに

grep コマンドをパイプを用いて利用します。

$ find 場所 -name "*" | xargs grep "検索文字列"

xargsは、標準入力に来たファイル名を、コマンドライン引数に変換して引数のプログラムに渡すコマンドです。

xargsコマンド例

$ ls xargs hoge.txt

上記コマンドの場合、ls の標準入力に hoge.txt を渡す役割をします。

パイプ 「|」は、コマンドの標準出力を、次のコマンドに渡す処理を行います。

$ find 場所 -name "*" | xargs grep "検索文字列"

上記コマンドは、find でヒットしたファイル名の全てに、 grep コマンドに引き渡します。

実行されるイメージは下記になります。

この記事のご感想やコメントはこちら

メールアドレスが公開されることはありません。 が付いている欄は必須項目です