我喜欢使用Jupyter来写一些代码片段,如下图所示:
但时间长了以后,可能积累了非常多的Notebook,如下图所示:
某一天,我突然想找很久之前写的一段代码片段,但是我不记得是写在哪个Notebook里面了。应该怎么办呢?
如果我们使用vscode或者vim打开Notebook对应的.ipynb
,我们就会发现实际上Notebook也是文本文件,如下图所示:
那么,在Linux和macOS下面,我们就可以使用Shell命令查询里面的内容。
假设我只记得要找的代码片段里面有一个关键字event
。
那么首先我们使用ls
命令列出所有的Notebook如下图所示:
接着,通过管道传递给grep
:
代码运行完成,立刻就可以看到,只有公众号演示.ipynb
这个Notebook里面有包含event
的代码片段。于是我们在Jupyter里面打开这个Notebook就可以找到代码了。
你以为这样完成了吗?我们测试一下,如果Notebook的名字包含空格会怎么样?包含引号又会怎么样?
先看包含空格的时候:
包含引号的时候:
这种情况怎么办呢?这个时候就需要换一种输出方式:
find *.ipynb -print0 | xargs -0 grep '未闻Code'
运行效果如下图所示:
请关注微信公众号【未闻Code】获取更多精彩文章。