【发布时间】:2018-03-17 17:09:28
【问题描述】:
问题:我们知道要查找的字符串,但不知道要查找的文件。
例如..
假设我们有一个包含以下内容的文件。
废话废话
.... 重要提示:非常重要的提示 ...... 呸呸呸呸
我们不知道文件名(可能有多个文件具有相同的“重要提示”标签),我们希望找到所有包含“重要提示”的文件
一种解决方案:
find /directory/to/search/ -exec grep "IMPORTANT NOTE" {} /dev/null \;
我会用它来编写脚本,因为我可以捕获文件名并用它做一些事情。
另一种解决方案:
grep -R "重要提示" /directory/to/search/*
我会用它来手动查找文件..
据我了解,以上运行在一个进程上并使用一个内核。是否可以将其修改为将每个文件搜索作为单独的任务执行,以利用机器上的所有可用内核? (有点像forkbomb1) 我知道你可以使用&在后台执行命令,这个可以用吗?如果是这样,我如何确保父 shell 保留命令输出的句柄?
1) fork bomb - 轻松拒绝服务“攻击”
重要提示:这将完全锁定您的机器。 (在你不关心的虚拟机上试试)
fork 炸弹的语法:
:(){ : | :& }; :
【问题讨论】:
-
为什么要使用全核?
-
我只是想看看是否可以通过使用所有处理能力使其运行得更快。
-
在 2-3 次实例之后,它将成为内存绑定,并且可能更早的磁盘绑定,除非您有一个非常大的系统。
-
叉子炸弹和你的问题有什么关系?这似乎很冗长,而不是问一个范围很广的事情。我们需要锁定详细信息(即,如果您正在搜索一个或多个文件)以便能够评估答案的正确性。
标签: linux bash optimization grep find