![](/img/trans.png)
[英]Ruby, using backticks to grep file extensions and searching file content for a string
[英]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
其中1234
是grep
進程的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.