如何按其包含的内容查找文件?

时间:2017-04-04 19:53:18

标签: bash

我想编写一个命令,找到包含给定内容的所有文件。例如,所有带有短语" iso file"的文件。我写了这个命令:

find -exec -grep -l "iso file"{}

但是我收到一条消息,说没有' -exec'的参数。这个命令应该如何?

2 个答案:

答案 0 :(得分:2)

-exec操作要求您指定要执行的以分号终止的命令。你省略了分号。您还在grep命令的名称前加了一个连字符,结果不太可能是系统上任何命令的名称。此外,如果您继续这样做,那么您可能只想考虑常规文件,而不是目录(或特殊文件)。您可以通过编写如下命令来解决所有这些问题:

find -type f -exec grep -l "iso file" {} \;

另一方面,考虑到find可以自行执行递归搜索,grep更多地是一种障碍而不是帮助:

grep -lR "iso file" .

答案 1 :(得分:0)

您可以使用以下命令使用xargs打印所有文件/目录。

find ./ -type f -print | xargs grep -l "iso file"

如果您想要打印匹配的整行,您可以从grep命令中删除'-l'参数并写下这样的内容。

find ./ -type f -print | xargs grep "iso file"