错误:grep:find:是一个目录

时间:2017-07-12 01:31:37

标签: linux grep

我是Linux新手并经历了一些教程和示例。我创建了一个名为cond的文件,并将rmsproptest放入其中。我正在尝试查找只有alex的实例。

如果我alexander我收到错误:

alex

如果我做grep alex *那么我得到(正如预期的那样)

grep: find: Is a directory.

为什么第一个会导致错误,第二个产生预期结果?

5 个答案:

答案 0 :(得分:4)

如果你想从特定文件中使用grep短语:

grep alex *

如果您使用grep: find: Is a directory,它将搜索当前工作目录中的所有文件。如果符合子目录,它会告诉您类似-r的内容 如果要执行递归搜索,请使用# grep -r "alex" /some/folder/ 密钥。例如

/some/folder/

在这种情况下,将检查来自man grep的子目录中的所有文件和文件 您可以随时使用{{1}}。

答案 1 :(得分:2)

正确答案是: grep -d skip alex / etc / *

答案 2 :(得分:1)

设置环境变量GREP_OPTIONS以包含值"--directories=skip"应该禁止“是目录”消息(即输入GREP_OPTIONS="--directories=skip"或将该行添加到您的一个登录初始化文件中.bashrc使该行为永久化)。

> cat test
alex
alexander

> grep alex *    
grep: mysql_data: Is a directory
grep: sql_updates: Is a directory
test:alex
test:alexander
grep: tmp_files: Is a directory

> GREP_OPTIONS="--directories=skip"

> grep alex *                      
test:alex
test:alexander

此外,由于存在名为“test”的命令而另一个名为“find”的命令,因此通常不建议将它们用作文件或目录名称。这不应该是一个问题,但它可能导致其他冲突。

答案 3 :(得分:0)

grep使用-l旗帜或-w旗帜

$ grep -l alex /etc/* 

返回包含word" alex"的文件列表在/etc目录

$ grep -w alex /etc/*

返回包含" alex"的/etc目录中文件的行列表。单词

答案 4 :(得分:0)

如果你想遍历所有目录,包括 find 目录,你可以运行这个命令:

grep alex * -r

它将递归遍历当前目录中的所有目录。