我是Linux新手并经历了一些教程和示例。我创建了一个名为cond
的文件,并将rmsprop
和test
放入其中。我正在尝试查找只有alex
的实例。
如果我alexander
我收到错误:
alex
如果我做grep alex *
那么我得到(正如预期的那样)
grep: find: Is a directory.
为什么第一个会导致错误,第二个产生预期结果?
答案 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
它将递归遍历当前目录中的所有目录。