【问题标题】:Using find and grep in a specifc file in a specific directory在特定目录中的特定文件中使用 find 和 grep
【发布时间】:2015-05-05 05:15:33
【问题描述】:

我的目录结构如下:

./A1
./A2
./A3
./B
./C

在我拥有的每个 A* 目录中:

./A*/logs
./A*/test

在我拥有的日志目录中:

./log-jan-1
./log-jan-2
./log-feb-1

如何在 A 目录中的所有 1 月日志中 grep 字符串?

我试过这个,但它没有找到字符串,虽然它存在于日志文件中:

find . -type d -name 'A*' print | xargs -n1 -I PATH grep string - PATH/logs/log-jan*

我做错了什么?

【问题讨论】:

  • 请比“它不起作用”更具体。
  • 我更正了声明。

标签: linux unix grep find


【解决方案1】:

你为什么不简单地使用

grep string ./A*/logs/log-jan*

?

【讨论】:

  • 据我了解,在某些情况下,您希望根据某些条件查找特定目录/文件,然后在其中 grep。
【解决方案2】:

如果不是拼写错误,您应该使用-print(或-print0)而不是打印。

但是由于find + xargs + grep 构造很难调试,您应该按顺序测试:

  • find . -type d -name 'A*' -print
  • find . -type d -name 'A*' -print0 | xargs -0 -n1 -I PATH echo grep string - PATH

最后:

find . -type d -name 'A*' -print0 | xargs -0 -n1 -I PATH grep string - PATH/logs/log-jan*

在你的用例中,-print-print0 应该给出相同的结果,但是因为被 -print 烧毁,我总是在 xargs 之前使用 -print0

【讨论】:

    猜你喜欢
    • 2015-09-06
    • 2021-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    • 1970-01-01
    • 2021-05-29
    相关资源
    最近更新 更多