我想在目录中的所有文件中搜索一串文本(而不是它的子目录;我知道该-r选项会这样做,但这不是我想要的)。
跑步
grep "string" /path/to/dir
Run Code Online (Sandbox Code Playgroud)
应该能够做到这一点,我读过,但它给了我错误:
grep: dir: 是一个目录
接下来,我尝试grep在多个文件上运行。
grep "string" .bashrc .bash_aliases 完美地工作。
grep "string" .bash* 也按预期工作。
grep "string" * 给我的错误:
grep: data: Is a directory
grep: Desktop: Is a directory
grep: Documents: Is a directory
grep: Downloads: Is a directory
...
Run Code Online (Sandbox Code Playgroud)只打印错误,我没有得到匹配的行。我尝试使用该-s选项,但无济于事。
所以,我的问题:
为什么我不能grep像 (1) 那样在目录上使用,而我应该可以使用?我已经在互联网上的大量示例中看到了这一点。
编辑:当我说“在目录上使用 grep”时,我的意思是“搜索该目录中不包括其子目录的所有文件”。我相信这就是 grep 将目录传递给它而不是文件时所做的。我不正确吗?
请给我一个关于grep解释(2)中命令行为的工作原理的解释。
编辑:让我更具体。为什么使用通配符来指定要搜索的多个文件,.bash*而不是使用*,甚至不使用./*?
如何使用 搜索目录(而不是其子目录)中的所有文件grep?
grep ×1