簡體   English   中英

grep搜索哪個文件?

[英]Which file is grep searching?

假設我要grep多個文件,有沒有辦法顯示grep當前正在搜索哪個文件?

例如:

grep "*.log" file1 file2 file3 file4

是否可以確定grep當前正在搜索哪個文件,即file1,file2,file3等,並顯示此輸出?

謝謝!

如注釋中所述, grep為此提供了-H選項。 man頁中

   -H, --with-filename
          Print the file name for each match.  This is the default when there is more than one file to search.

您需要做的就是在命令中將標志添加為grep -H "*.log" file1 file2 file3 file4 ,您可以觀察grep在每個輸入文件中進行模式匹配的順序。

如果grep沒有顯示任何匹配項,並且您想知道它當前正在掃描哪個文件,則可能要檢查它已打開的文件句柄。 這不是可移植的,但是在Linux上,似乎文件描述符3是您要檢查的文件描述符,您可以使用

ls -l /proc/1234/fd/3

其中1234grep進程的PID。

您可以使用簡單的循環和globstar來運行所有文件,並回顯名稱,然后使用grep表示您的模式。

for file in **
do
  echo "searching $file"
  grep "$pattern" "$file"
done

結果將顯示為:

searching file1 
LINE_WITH_PATTERN 
searching file2 
searching file3
LINE2_WITH_PATTERN

如果您只想搜索特定文件...

for file in file1 file2 file3 file4

使用--with-filename當然是將結果與包含結果的文件相關聯的更簡單方法,但是如果您真的想查看grep當前正在搜索哪個文件,則可以在循環中簡單地調用它:

for f in file1 file2 file3 file4; do
  echo "Searching $f"
  grep "*.log" "$f"
done

這將在搜索開始之前打印文件名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM