我需要 GREP 语法来完成以下任务(在 LINUX 操作系统中):
查询当前目录中包含字符串的所有文件,但仅列出包含匹配项的文件名。
谢谢!
答案1
您可以使用
grep -rl stringToSearch .
或者
find . -type f -exec grep -l stringToSearch {} \;
有关grep
其他 unix 命令的更多信息,请参阅手册(man
)
在这种情况man grep
下
-l, --files-with-matches 抑制正常输出;而是打印每个输入文件的名称,这些文件通常会打印输出。
扫描将在第一次匹配时停止。
显然,作为 bash 命令,如果你的字符串包含特殊字符或空格,你必须(按顺序)对其进行转义和/或用配额括住你的字符串
答案2
“Grep -l” 将为您提供文件名列表。
> echo "hello" > test_file1.list
> echo "hello2.." > test_file2.list
> echo "xyz" > test_file3.list
> grep "hello" test_file*list
test_file1.list:hello
test_file2.list:hello2..
> grep -l "hello" test_file*list
test_file1.list
test_file2.list