Grep
grep 顯示包含包含字元串的文件的文件夾
我需要在我的伺服器上執行 grep 來搜尋擴展 CodeIgniter 1 文件的文件,因為我們正在升級到 CI2。在一個文件夾中包含數百個特定於站點的文件夾,例如:
dev/sitea.com/site/www dev/siteb.com/site/www dev/sitec.com/site/www ... and so on
我如何 grep 查找直接在 dev 下的哪些文件夾包含引用字元串“MY_Output”(php 文件)的文件(或變數子文件夾中的許多文件)
我知道
-l
列出文件的標誌,但我不確定如何將它與其他標誌放在一起說“告訴我哪些網站包含帶有此字元串的文件”這可能嗎?謝謝!
編輯:澄清一下,這些站點級文件夾將包含擴展 MY_Output.php 的文件,這是一個常見的共享文件:
class Whatever extends MY_Output
這將是我的方法:
find dev -type f -print0 | \ # find all files xargs -0 grep 'extends MY_Output' | \ # search for your string cut -d/ -f2 | \ # extract web folder name sort | uniq # eliminate duplicates
注意使用
print0
參數 tofind
和-0
(零)標誌 toxargs
,如果您的文件名中嵌入了空格,這可以防止出現問題。
我在發布的各種解決方案中看到了很多不必要的複雜性。考慮以下:
grep -r [regex to find] [path to search] | awk -F: '{print $1}' | uniq