Bash
貓 * |grep something…結果在什麼文件中?
如果要執行以下命令
cat * | grep DATABASE
shell 會吐出 * 文件中包含該單詞
DATABASE
的所有行。有沒有辦法也吐出每一行是什麼文件?我嘗試使用
-H
grep 的選項,根據man
所說print the filename for each match
,但在我的 shell 中它只是說(standard input):$DATABASE_FUNCTION = dothis();
不要為此使用 cat 。而是直接使用
grep DATABASE *
或grep -n DATABASE *
(如果您想知道行號和文件名)。請參閱cat 的無用用法。
再澄清一點:
cat *
實際上將所有文件連接起來,因為它通過管道將它們提供給 grep,因此 grep 無法知道哪些內容屬於哪個文件,甚至無法真正知道它是在掃描文件還是你在只是打字很快。一旦使用管道,這就是一個大的標準輸入流。最後,
-H
幾乎可以肯定是多餘的,因為當 grep 有多個文件要搜尋時,預設情況下會列印文件名。但是,如果您想解析輸出,它可能會有一些用處,因為*
glob 有可能會擴展為單個文件,而 grep 在這種情況下會省略文件名。