尝试编写我的第一个compund linux查询并遇到一些知识空白。
我们的想法是找到所有可能是.doc或.txt的文件,以及搜索文本小丑的内容。
所以我开始从根本上搜索。
$find /
然后我添加了文件名的通配符。'
$find / -name '*.doc'...uhh oh
第一个问题。我该如何指定?是管道吗?或双管||要么...?我需要像这样重复-name参数吗?
$find / -name '*.doc' || -name '*.txt'
第二个?在之后/之前为字符串添加grep??
$find / -name '*.doc' || -name '*.txt' grep -H 'cat' {} \
最后是否有一个我可以像SQLFiddle一样验证语法/运行的地方?
TIA
答案 0 :(得分:3)
'或'是-o
您必须再次指定查找类型。如下所示:
find / -name *.doc -o -name *.txt
你可以简单地把你的grep命令放在前面,只要你在反引号中包含你的find命令:
grep 'whatever' `find / -name *.doc -o -name *.txt`
有一个相当不错的指南可以找到here
答案 1 :(得分:1)
你想要这样的东西:
find / \( -name \*.doc -o -name \*.txt \) -exec grep clown {} \; -print
您在-o
中指定或使用\( \)
,在grep
中运行-exec
,您可以在bash shell中验证语法。
答案 2 :(得分:0)
尝试:
(find ./ -name "*.txt" -print0 2>/dev/null ; find ./ -name "*.doc" -print0 2>/dev/null) | xargs -0 grep clown