gpt4 book ai didi

regex - 在文件和输出文件名中搜索具有特定文本的行(文件命令和 grep)

转载 作者:太空宇宙 更新时间:2023-11-04 11:19:20 24 4
gpt4 key购买 nike

我知道这个问题对你们中的一些人来说可能很简单,但我尝试了几种组合并在谷歌上搜索了很多,但没有成功。

问题:我有一堆具有给定文件名但位于不同目录中的文件。

例如,我在目录 a、b、c、d 中有一个名为“THEFILE.txt”的文件。我在一个以这些为子目录的目录中。在每个“THEFILE.txts”中,我正在寻找具有以下模式的行:“Has this property blah blah blah _apple”。所以我对这条线的确切了解是它以“具有此属性”开头并以“_apple”结尾。

我试过:

  1. 找到。 -name 'THEFILE.txt' -exec grep -l '有这个属性' {}\;这行得通,但是我得到的每一行都带有“具有此属性”。我只想要最后带有 _apple 的

  2. 所以我尝试了:寻找 。 -name 'THEFILE.txt' -exec grep -l '有这个属性*_apple' {}\;//不起作用,根据我的谷歌搜索,我不希望它起作用。

  3. 所以,接下来我尝试了:寻找 。 -name 'THEFILE.txt' -exec grep -l '有这个属性[!-~]*_apple' {}\;//不起作用

  4. 找到。 -name 'THEFILE.txt' -exec grep '有这个属性' {}\; | grep '_apple$'//这会输出所有匹配的行,但不会输出文件名

  5. 找到。 -name 'THEFILE.txt' -exec grep '有这个属性' {}\; | grep -l '_apple$'//说文件是stdin

预期输出:(假设文件 a 和 c 有所需的行)

./a/THEFILE.txt
./c/THEFILE.txt

最佳答案

您的尝试 2. 几乎完成了。稍微调整一下:

find . -name THEFILE.txt -exec grep -q '^Has this property.*_apple$' '{}' ';' -print

它比递归 grepping 更精确,也更简单(无管道)。

上面的工作(与 grep -l 相反)的原因是 -exec 操作评估其命令的退出状态。grep 将以 0 状态退出(即 true),如果它找到它要查找的内容,这将使 -exec yield true ,这反过来又会导致下一个操作(-print)也被执行。

关于regex - 在文件和输出文件名中搜索具有特定文本的行(文件命令和 grep),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com