grep の結果でファイル名のみ表示する

grepで検索結果をマッチしたファイル名のみ表示

grepで検索した結果で、ファイル名のみ表示したい場合は「grep -l pattern file1 file2…」とすれば、ファイル名のみ表示します

$ grep ssl /etc/httpd/conf.d/*.conf | head
/etc/httpd/conf.d/ssl.conf:SSLPassPhraseDialog exec:/usr/libexec/httpd-ssl-pass-dialog
/etc/httpd/conf.d/ssl.conf:SSLSessionCache         shmcb:/run/httpd/sslcache(512000)
/etc/httpd/conf.d/ssl.conf:#   block. So, if available, use this one instead. Read the mod_ssl User
/etc/httpd/conf.d/ssl.conf:# accelerators. Use "openssl engine -v" to list supported
/etc/httpd/conf.d/ssl.conf:ErrorLog logs/ssl_error_log
/etc/httpd/conf.d/ssl.conf:TransferLog logs/ssl_access_log

# -l を使用するとファイル名のみの表記になります
$ grep -l ssl /etc/httpd/conf.d/*.conf | head
/etc/httpd/conf.d/ssl.conf

grepで検索結果をマッチしなかったファイル名のみ表示

grepで検索した結果で、マッチしなかったファイル名のみ表示したい場合は「grep -lv pattern file1 file2…」とすれば、検索でヒットしなかったファイル名のみ表示します。

但し、grep -lv pattern file1 file2…の場合は、パターンにマッチしない行が1行以上あるファイルの名前を表示するので、下記の場合での「ssl.conf」ではsslを含まない行数は「203」行あるのでlvのオプションでもヒットしますので、「lv」オプションは使用する機会は少ないかな

$ grep -lv ssl /etc/httpd/conf.d/*.conf
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/fcgid.conf
/etc/httpd/conf.d/munin-cgi.conf
/etc/httpd/conf.d/munin.conf
/etc/httpd/conf.d/owncloud.conf
/etc/httpd/conf.d/php.conf
/etc/httpd/conf.d/security.conf
/etc/httpd/conf.d/ssl.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/vhosts.conf
/etc/httpd/conf.d/welcome.conf

# sslを含まない行数
$ grep -v ssl /etc/httpd/conf.d/ssl.conf|wc -l
203
# sslを含む行数
$ grep ssl /etc/httpd/conf.d/ssl.conf|wc -l
19


 

スポンサーリンク