需要帮助编写复合linux查询

时间:2013-08-29 12:26:44

标签: linux

尝试编写我的第一个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

3 个答案:

答案 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