我需要在整个Linux文件系统中找到一个字符串,并使用grep在文件系统中查找此字符串的所有实例。我得到了两种结果:一种来自我的/.bash_history
,另一组来自proc
目录。很明显,答案在于某种过程。读取/ proc中的虚拟文件内容
的/proc
结果看起来是这样的:
Binary file /proc/12345/task/12345/cmdline matches
当我尝试导航到目录12345,它不存在。我在redhat手册中读过/ proc文件系统中的文件往往是虚拟的。我猜测这个过程可能在grep完成搜索的时候结束了,我导航到了相应的目录。 有没有一种方法可以在与grep相同的命令中打印进程的内容?在这种情况下,它返回两个结果。我如何阅读每个结果的内容? 谢谢!
编辑:我以前grep -rs "*string_name*" /
来查找字符串
通常,您不想跨越文件系统边界。由于'grep -r'不能执行此操作,请改用'find/-xdev -type f -exec grep somestring {} +'。还要注意,盲目使用'grep -a'可能会弄乱你的终端。 – o11c
'{}'和'+'是什么意思? – tinkuge
'{}'表示“替换为找到的任何文件”找到“。 '+'是exec所特有的,意思是“exec与多个文件在一起”,而'''表示“exec每个文件一次” - 在可能的情况下,通常应该使用'+',因为'fork + exec'相对较贵。 – o11c