Linux
“grep -rn”只產生兩個預期結果之一
我正在嘗試在包含特定單詞的目錄結構中查找所有文件,但它無法正常工作。
- 例如:從路徑執行時
/Institute/IITDhanbad/
,命令grep -rn "Programmer" *
結果為
BTECH/CompScience.txt:22: Sudip is a Programmer
- 但是,當從路徑執行時
/Institute/IITDhanbad/MTECH
,相同的命令給出CSP/Boys/Good/Electronics.txt:13: Sourav is a Programmer
問題是,在文件夾中執行
grep
呼叫時的預期結果是同時具有兩個結果,即/Institute/IITDhanbad/
BTECH/CompScience.txt:22: Sudip is a Programmer MTECH/CSP/Boys/Good/Electronics.txt:13: Sourav is a Programmer
出了什麼問題以及如何解決這個問題?
一些附加資訊:
- 文件類型和訪問權限是:
文件 模式 MTECH
drwxrwsr-x
BTECH
drwxrwsr-x
CSP
lrwxrwxrwx
ls -ld
在/Institute/IITDhanbad/
路徑中:drwxrwsr-x 4 suresh faculty 4096 Sep 16 00:53
ls -ld
在/Institute/IITDhanbad/MTECH
路徑中:drwxrwsr-x 4 suresh faculty 4096 Sep 16 00:53
ls -ld
在/Institute/IITDhanbad/MTECH/CSP
路徑中:dr-xr-sr-t 4 ganesh faculty 4096 Sep 12 20:58 .
CSP
是一個符號連結(參見 參考資料l
)lrwxrwxrwx
。顯然,除了作為參數提供的符號連結之外,您grep
不遵循帶有的符號連結。-r
當你這樣做時:grep -rn "Programmer" *
CSP
在(即在/Institute/IITDhanbad/MTECH/
,對嗎?)的父目錄中,CSP
在 shell 展開後作為參數出現*
。但是,如果您將這個目錄“更高”(in/Institute/IITDhanbad/
)然後CSP
不是參數,它是grep
遞歸掃描期間遇到的符號連結。GNU
grep
就是這樣工作的。是你的grep
GNUgrep
嗎?如果是這樣,請參閱手冊-R
。-R
就像-r
但它確實遵循符號連結。請注意,如果您
grep -rn "Programmer" .
在父目錄中執行CSP
thenCSP
將不會作為參數出現。的用法*
對於您觀察到的內容至關重要。