我怎樣從幾個檔案中搜尋(grep),并隻顯示比對到的檔案的檔案名?
當你從不止一個的檔案中搜尋時,預設它将顯示檔案名:
<code>grep "word" 檔案名</code>
<code>grep root /etc/*</code>
示例輸出:
<code>/etc/bash.bashrc: see "man sudo_root" for details.</code>
<code>/etc/crontab:17 * * * * root cd / && run-parts --report /etc/cron.hourly</code>
<code>/etc/crontab:25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )</code>
<code>/etc/crontab:47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )</code>
<code>/etc/crontab:52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )</code>
<code>/etc/group:root:x:0:</code>
<code>grep: /etc/gshadow: permission denied</code>
<code>/etc/logrotate.conf: create 0664 root utmp</code>
<code>/etc/logrotate.conf: create 0660 root utmp</code>
每行開始的第一個部分是檔案名(如:/etc/crontab、/etc/group)。使用 -l 選項可以隻顯示檔案名:
<code>grep -l "string" filename</code>
<code>grep -l root /etc/*</code>
<code>/etc/aliases</code>
<code>/etc/arpwatch.conf</code>
<code>grep: /etc/at.deny: permission denied</code>
<code>/etc/bash.bashrc</code>
<code>/etc/bash_completion</code>
<code>/etc/ca-certificates.conf</code>
<code>/etc/crontab</code>
<code>/etc/group</code>
你也可以逆轉輸出;使用 -l 選項來輸出那些不比對的檔案的檔案名:
<code>grep -l "word" filename</code>
<code>/etc/apm</code>
<code>/etc/apparmor</code>
<code>/etc/apparmor.d</code>
<code>/etc/apport</code>
<code>/etc/apt</code>
<code>/etc/avahi</code>
<code>/etc/bash_completion.d</code>
<code>/etc/bindresvport.blacklist</code>
<code>/etc/blkid.conf</code>
<code>/etc/bluetooth</code>
<code>/etc/bogofilter.cf</code>
<code>/etc/bonobo-activation</code>
<code>/etc/brlapi.key</code>
本文來自雲栖社群合作夥伴“linux中國”
原文釋出時間為:2013-04-02.