【发布时间】:2017-07-06 08:13:06
【问题描述】:
我需要查询同时具有字符串“rESTWSLib”和“500”的 java 文件。 这两个字符串都可以位于文档中的任何位置(即行),并且可以位于 0-无限行(位置 0-n)上的任何位置。
如何 grep 查询“rESTWSLIB”:
find -iname '*.java' -type f -exec grep -l "rESTWSLib" '{}' \; > ~/SMCrestwsList1.txt
输出:
./some/file1.java
./some/file2.java
如何 grep 查询“500”:
find -iname '*.java' -type f -exec grep -l "500" '{}' \; > ~/SMCrestwsList2.txt
输出:
./some/file2.java
./some/file3.java
我需要将两个 grep 查询(或它们的结果)结合起来,所以我希望得到这样的结果:
./some/file2.java
我已经尝试了How to grep query all files for 2 strings中给出的解决方案
find -iname '*.java' -type f -exec grep -l "rESTWSLib" '{}' + | xargs grep -l "500" \; > ~/SMCrestwsList3.txt
但是,由于很少有文件名称中包含空格,因此仅给出部分输出并带有以下错误消息:
grep: ;: No such file or directory
grep: ./cdrm/bat/OpportunityManagement/Verify: No such file or directory
文件名是“验证某事”。
如何调整它以接受文件名中的空格?
【问题讨论】:
标签: bash command-line grep find csh