【问题标题】:Searching in linux/unix [closed]在 linux/unix 中搜索 [关闭]
【发布时间】:2017-01-15 04:04:32
【问题描述】:

我在 bash 终端中。我被 cd 到一个文件夹(网络应用程序文件夹)

我正在寻找一个文件。我知道它存在。我不知道在哪个 sub sub.. 文件夹下。我所知道的是,在文件中出现了这些词: “轮播”“javascript”“图表”

我怎样才能找到这个文件?

【问题讨论】:

标签: linux bash unix search grep


【解决方案1】:

如果您想查找包含以下任何单词的文件,请尝试运行此命令:

grep -rE 'foo1|foo2' .

如果你想找到包含所有这些单词的文件,

试试这个:

grep -r 'foo1' .|grep 'foo2'

如果你想在文件中的不同行查找多个字符串,

你可以使用

grep -rl 'foo1' .|xargs grep -l 'foo2'

-r

对于每个目录操作数,读取并处理该目录中的所有文件 目录,递归。按照命令行上的符号链接,但 跳过递归遇到的符号链接。请注意,如果没有文件 给定操作数,grep 搜索工作目录。

-E

使用模式作为模式。如果多次使用此选项或 结合 -f (--file) 选项,搜索所有模式 给定的。 (-e 由 POSIX 指定。)

您可以阅读GNU Grep 2.27 以了解有关grep 的更多信息。 希望这会有所帮助。

【讨论】:

  • 我投了赞成票,因为这是正确的“方向”,但请注意 OP 正在寻找包含所有这些词(不是其中任何一个词)的文件
  • @mauro 谢谢你提醒我。我更新了我的答案。
【解决方案2】:

要从当前目录向下搜索所有目录,试试这个:

find . -type f -exec egrep 'carousel|javascript|chart' {} \; -print

这将找到所有包含您选择的单词的文本文件。 如果您知道要搜索的特定文件扩展名,可以像这样修改它以搜索 Python 文件:

find . -name '*.py' -type f -exec egrep 'carousel|javascript|chart' {} \; -print

【讨论】:

    【解决方案3】:

    如果您使用轮播 javascript 图表搜索所有文件,您可以尝试:

    find . -type f -exec sh -c 'grep -q carousel $1 && grep -q javascript $1 && grep -q chart $1 && echo $1' sh {} \;
    

    例子:

    $ cat a.txt
    carousel
    javascript
    chart
    
    $ cat b.txt
    carousel
    chart
    

    结果:

    ./a.txt
    

    【讨论】:

      猜你喜欢
      • 2010-09-13
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 2021-12-05
      • 2012-12-28
      • 1970-01-01
      • 2019-05-18
      • 2014-12-27
      相关资源
      最近更新 更多