このページの内容

1.2 概要

指定した条件に一致するファイルの一覧を作成し、そのファイルに対してコマンドを実行するための主なプログラムは、find、locate、xargsです。システム管理者は、追加のコマンドupdatedbを使って、locate用のデータベースを作成します。

findはディレクトリ階層からファイルを検索し、見つかったファイルの情報を表示します。実行形式は次のとおりです。

find [file...] [expression]

findの典型的な使い方を示します。この例は、/usr/srcを根とするディレクトリツリー内で、名前が「.c」で終わり、サイズが101 KiB以上のファイルすべての名前を表示します。

find /usr/src -name '*.c' -size +100k -print

シェルによる展開を防ぐため、ワイルドカードは引用符で囲む必要があります。

locateは専用のファイル名データベースから、パターンに一致するファイル名を検索します。システム管理者がupdatedbを実行してデータベースを作成します。locateの実行形式は次のとおりです。

locate [option...] pattern...

この例は、既定のファイル名データベース内で、名前が「Makefile」または「makefile」で終わるファイルすべての名前を表示します。データベースに格納されるファイル名は、システム管理者がどのようにupdatedbを実行したかによって決まります。

locate '*[Mm]akefile'

xargsは「EX-args」と発音し、その名前は「引数を結合する」という意味です。xargsは標準入力から読み取った引数を集め、コマンド行を組み立てて実行します。多くの場合、これらの引数はfindが生成したファイル名の一覧です。xargsの実行形式は次のとおりです。

xargs [option...] [command [initial-arguments]]

次のコマンドは、file-listに列挙されたファイルを検索し、「typedef」という語を含む行をすべて表示します。

xargs grep typedef < file-list