#navi(../)
* ディレクトリ配下のファイルも対象にgrepする [#zac504bb]
grepのrオプションを使用することにより、指定したディレクトリ配下のファイルも検索することができます。~
以下に使用例を記します。
#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)
* 関連記事 [#jcfd9270]
-[[grepでタブを検索する方法>逆引きUNIXコマンド/grepでタブを検索する方法]]
-[[grepで指定したキーワードに色をつける>逆引きUNIXコマンド/grepで指定したキーワードに色をつける]]
-[[grepでハイフン付のキーワードを検索する方法>逆引きUNIXコマンド/grepでハイフン付のキーワードを検索する方法]]
-[[grepコマンド単体で隠しファイルや隠しディレクトリも対象にする方法>逆引きUNIXコマンド/grep単体で隠しファイルや隠しディレクトリも対象にする方法]]
-[[grepコマンドでパターンヒットがあったファイルのファイル名のみ表示する方法>逆引きUNIXコマンド/grepでパターンヒットがあったファイルのファイル名のみ表示する方法]]
-[[grepで検索した行の前後も表示する方法>逆引きUNIXコマンド/grepで検索した行の前後も表示する方法]]
-[[ディレクトリ配下のファイルも対象にgrepする>逆引きUNIXコマンド/ディレクトリ配下のファイルも対象にgrepする]]
* grep -r で実行 [#g5805ebe]
以下の実行例は/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 キーワード ディレクトリ
* grepに-rオプションがない場合(商用UNIX) [#m9fdd71a]
商用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する例でした。
#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)