![Bash - 有没有办法在当前目录中搜索字符串(或模式)?](https://linux22.com/image/1300830/Bash%20-%20%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%9C%A8%E5%BD%93%E5%89%8D%E7%9B%AE%E5%BD%95%E4%B8%AD%E6%90%9C%E7%B4%A2%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%88%E6%88%96%E6%A8%A1%E5%BC%8F%EF%BC%89%EF%BC%9F.png)
假设我在包含一堆文件的某个目录中,并且我正在尝试查找包含字符串“string”的文件在其内容中。有办法吗?谢谢。
答案1
简单回答:
grep -l string *
将列出当前目录中包含字符串的所有文件细绳。
如果您想在当前目录和任何子目录中的所有文件中查找字符串,请使用:
grep -rl string .
详细信息:
* 将匹配当前文件夹中的所有内容(以 . 开头的文件除外),理论上它还会匹配目录,尽管这通常并不重要。如果您真的想挑剔,可以像这样使用 find:
find . -type f -maxdepth 1 -exec grep -i string {} /dev/null \;
如果要查看当前文件夹及其子文件夹,请保留 -maxdepth 1,例如:
find . -type f -exec grep -i string {} /dev/null \;
{} 表示匹配的文件名,但要列出文件的名称,您还必须添加至少两个文件名,而提及 /dev/null 即可。您可以根据需要修改它以获得想要的结果。应该为您提供工作的基础。:)
答案2
以下是在当前目录及其所有子目录中执行此操作的一些方法。
如果您想要找到该文本的文件的名称:
find . -type f -exec grep -l 'string' {} \;
如果您只想查看找到文本的行:
find . -type f -exec grep 'string' {} \;
如果您希望查看被搜索的文件的名称,然后查看找到某些内容时的行内容:
find . -type f -print -exec grep 'string' {} \;
当然,这还可以进一步结合......