目录-
- home/Modules/abc/iAmAFile
iAmAFile的内容:Random123 - home/Modules/atoz/iAmAFile
iAmAFile的内容:Random123 - home/Modules/23abc/iAmAFile/src
iAmAFile的内容:Random1 - home/Modules/123abc/iAmAFile
iAmAFile的内容:Random3 - home/Modules/123a/src/iAmAFile
iAmAFile的内容:Random1
我正在寻找的输出是:
- home/Modules/23abc/src/iAmAFile(内容为Random1)
- home/Modules/123abc/iAmAFile(内容Random3)
解释:这些文件不包含Random123,并且是名称为abc的目录的子目录。
home/Modules/123a/src/iAmAFile不合格,因为它在子文件iAmAFile中没有Random123,但父目录或父目录之前的目录名称不合格,原因是它不包含abc。
其他两个不符合iAmAFile具有字符串Random123的条件
我想出的命令是:
ls -F Modules/*abc | grep -r -L --include="iAmAFile" "Random123"
它给出一个输出
- home/Modules/23abc/src/iAmAFile
(内容为Random1) - home/Modules/123abc/iAmAFile**
(内容为Random3) - home/Modules/123a/src/iAmAFile
(内容为随机1)
它包括与命名条件不匹配的目录。
建议在path
上组合负grep
(grep -v
)和正find
滤波器。
grep -L "Random123" $(find . -type f -path "*abc*")
解释
find . -type f -path "*abc*"
在路径中列出包含abc
的目录下的所有文件。
grep -L "Random123" <files list>
列出所有不包含Random123
字符串的文件。来自<files list>
。