我有以下目录结构:
./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*
我做错了什么?
答案 0 :(得分:1)
为什么不简单地使用
grep string ./A*/logs/log-jan*
答案 1 :(得分:0)
如果不是拼写错误,则应使用-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
被烧了,我总是在-print0
之前使用xargs