grepのrオプションを使用することにより、指定したディレクトリ配下のファイルも検索することができます。
以下に使用例を記します。
以下の実行例は/etcディレクトリ配下のファイル内にi386というキーワードがあるファイルをgrepしてみます。
パーミッションの状態で読み取りできないファイルなどがあるので、rootで実行しています。
root@hpmini:~# grep -r i386 /etc /etc/gftp/bookmarks:remote directory=/pub/suse/i386 /etc/xdg/xfce4/xinitrc:#GTK_PATH="$GTK_PATH:/usr/lib/i386-linux-gnu/gtk-2.0" /etc/java-6-openjdk/security/java.policy:grant codeBase "file:/usr/lib/jvm/java-6-openjdk-i386/jre/lib/ext/*" { バイナリファイル /etc/ld.so.cache に一致しました /etc/clutter-imcontext/clutter.immodules:# ModulesPath = /usr/lib/i386-linux-gnu/clutter-imcontext/immodules /etc/clutter-imcontext/clutter.immodules:"/usr/lib/i386-linux-gnu/clutter-imcontext/immodules/im-ibus.so" /etc/apt/sources.list.save:# deb cdrom:[Debian GNU/Linux 7.0.0 _Wheezy_ - Official Snapshot i386 LIVE/INSTALL Binary20130505-21:15]/ wheezy main /etc/apparmor.d/lightdm-guest-session:/usr/lib/i386-linux-gnu/lightdm/lightdm-guest-session-wrapper { /etc/ld.so.conf.d/i486-linux-gnu.conf:/lib/i386-linux-gnu /etc/ld.so.conf.d/i486-linux-gnu.conf:/usr/lib/i386-linux-gnu
したがって構文は以下のようになります。
grep -r キーワード ディレクトリ
ファイル名のみの一覧を表示したい場合は、-lオプションを使用します。
root@hpmini:~# grep -rl i386 /etc /etc/gftp/bookmarks /etc/xdg/xfce4/xinitrc /etc/java-6-openjdk/security/java.policy /etc/ld.so.cache /etc/clutter-imcontext/clutter.immodules /etc/apt/sources.list.save /etc/apparmor.d/lightdm-guest-session /etc/ld.so.conf.d/i486-linux-gnu.conf
キーワード大文字小文字を無視して検索する場合は以下のようになります。
grep -ri キーワード ディレクトリ
オプションlをつければファイル一覧のみになります。
grep -ril キーワード ディレクトリ
商用UNIX(HP-UXなど)のgrepを使用すると-rオプションがない場合があります。
その場合は、findで代用することができます。
find ディレクトリ -type f | xargs grep キーワード
find, xargs, grepを使用してi386の文字列が含まれるファイル一覧を表示した例です。
findの-type fはファイルのみを対象とする意味です。
実行例は以下の通りです。
root@hpmini:~# find /etc -type f | xargs grep -l i386 /etc/gftp/bookmarks /etc/xdg/xfce4/xinitrc /etc/java-6-openjdk/security/java.policy /etc/ld.so.cache /etc/clutter-imcontext/clutter.immodules /etc/apt/sources.list.save /etc/apparmor.d/lightdm-guest-session /etc/ld.so.conf.d/i486-linux-gnu.conf
以上、ディレクトリ以下のファイルを全てgrepする例でした。