![](/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.