このエントリーをはてなブックマークに追加


ディレクトリ配下のファイルも対象にgrepする

grepのrオプションを使用することにより、指定したディレクトリ配下のファイルも検索することができます。
以下に使用例を記します。


関連記事

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 キーワード ディレクトリ

grepに-rオプションがない場合(商用UNIX)

商用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する例でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:45