我知道这个问题对你们中的一些人来说可能很简单,但我尝试了几种组合并在谷歌上搜索了很多,但没有成功。
问题:我有一堆具有给定文件名的文件,但在不同的目录中。
例如,我在目录 a、b、c、d 中有一个名为“THEFILE.txt”的文件。我在一个将这些作为子目录的目录中。在每个 'THEFILE.txts' 中,我都在寻找具有以下模式的行:'Has this property blah blah blah _apple'。所以我对这条线的确定是它以'Has this property'开头并以'_apple'结尾。
我试过了:
寻找 。-name 'THEFILE.txt' -exec grep -l '有这个属性' {} \; 这行得通,但我得到的每一行都带有“有这个属性”。我只想要最后有 _apple 的
所以我尝试了:找到 . -name 'THEFILE.txt' -exec grep -l '有这个属性*_apple' {} \; //不起作用,从我的谷歌搜索来看,我不希望它。
所以,接下来我尝试了: find . -name 'THEFILE.txt' -exec grep -l '有这个属性[!-~]*_apple' {} \; //不工作
寻找 。-name 'THEFILE.txt' -exec grep '有这个属性' {} \; | grep '_apple$' //这会输出所有匹配的行,但不输出文件名
寻找 。-name 'THEFILE.txt' -exec grep '有这个属性' {} \; | grep -l '_apple$' //说文件是标准输入
预期输出:(比如文件 a 和 c 有所需的行)
./a/THEFILE.txt
./c/THEFILE.txt