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 コマンドに引き渡します。
実行されるイメージは下記になります。