gpt4 book ai didi

shell - 使用文件中的行作为 grep 的文件名?

转载 作者:行者123 更新时间:2023-12-01 09:11:25 28 4
gpt4 key购买 nike

我有一个包含文件名(以及它们的完整路径)的文件,我想在所有文件中搜索一个单词。一些伪代码来解释:

grep keyword <all files specified in files.txt>

cat files.txt > grep keyword
cat files txt | grep keyword

问题是我只能通过 grep 来搜索文件名,而不是实际文件的内容。

最佳答案

cat files.txt | xargs grep keyword

grep keyword `cat files.txt`

或(相当于以前但更难读错)

grep keyword $(cat files.txt)

应该可以解决问题。

陷阱:

  • 如果 files.txt 包含带空格的文件名,任何一种解决方案都会出错,因为“This is a filename.txt”将被解释为四个文件,“This”、“is”、“a”和“文件名.txt”。永远不要在文件名中包含空格的一个很好的理由。

    • 有很多方法可以解决这个问题,但没有一个是微不足道的。 (find ... -print0/xargs -0 就是其中之一。)
  • 第二个 (cat) 版本可能会导致很长的命令行(超出环境限制时可能会失败)。第一个(xargs)版本自动处理长输入; xargs 提供了几个选项来控制细节。

关于shell - 使用文件中的行作为 grep 的文件名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/689173/

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