大量の研究データを扱っていると、特定の情報がどこに保存されているか思い出せないかったり、コードがどこにあるのか分からないことがよくありました。そこで、覚えている一部の情報だけで検索できるコマンドラインツールを開発しました。
GUI ではなく TUI を採用しているため、SSH 経由やスーパーコンピューター、ワークステーション上でも利用できます。
インストール方法
まず、以下のリリース版からダウンロードしてください。
Mac / Windows / Linux のバイナリファイルを配布しています。
今回はLinuxで説明をしたいと思います。
この記事を書いているときは最新版が v0.1.2 でした。ですので、このバージョンをダウンロードします。
~/downloads$ wget https://github.com/ddd3h/ScopeFind/releases/download/v0.1.2/ScopeFind-linux-v0.1.2
--2025-11-26 15:08:53-- https://github.com/ddd3h/ScopeFind/releases/download/v0.1.2/ScopeFind-linux-v0.1.2
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://release-assets.githubusercontent.com/github-production-release-asset/1104438638/0a754316-c854-4d4c-a879-a177b5b1628b?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-11-26T16%3A05%3A43Z&rscd=attachment%3B+filename%3DScopeFind-linux-v0.1.2&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-11-26T15%3A05%3A30Z&ske=2025-11-26T16%3A05%3A43Z&sks=b&skv=2018-11-09&sig=vWAVKagnxASj1lQDyRdp1cs89XCRIFOGrnrdIyUh6j8%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc2NDE3MTUzNCwibmJmIjoxNzY0MTY5NzM0LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.a_EOhDgXJfoT2E2D6y4gD6bqC9GglgYTAXbQvnt-Rc8&response-content-disposition=attachment%3B%20filename%3DScopeFind-linux-v0.1.2&response-content-type=application%2Foctet-stream [following]
--2025-11-26 15:08:54-- https://release-assets.githubusercontent.com/github-production-release-asset/1104438638/0a754316-c854-4d4c-a879-a177b5b1628b?sp=r&sv=2018-11-09&sr=b&spr=https&se=2025-11-26T16%3A05%3A43Z&rscd=attachment%3B+filename%3DScopeFind-linux-v0.1.2&rsct=application%2Foctet-stream&skoid=96c2d410-5711-43a1-aedd-ab1947aa7ab0&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skt=2025-11-26T15%3A05%3A30Z&ske=2025-11-26T16%3A05%3A43Z&sks=b&skv=2018-11-09&sig=vWAVKagnxASj1lQDyRdp1cs89XCRIFOGrnrdIyUh6j8%3D&jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmVsZWFzZS1hc3NldHMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIiwia2V5Ijoia2V5MSIsImV4cCI6MTc2NDE3MTUzNCwibmJmIjoxNzY0MTY5NzM0LCJwYXRoIjoicmVsZWFzZWFzc2V0cHJvZHVjdGlvbi5ibG9iLmNvcmUud2luZG93cy5uZXQifQ.a_EOhDgXJfoT2E2D6y4gD6bqC9GglgYTAXbQvnt-Rc8&response-content-disposition=attachment%3B%20filename%3DScopeFind-linux-v0.1.2&response-content-type=application%2Foctet-stream
Resolving release-assets.githubusercontent.com (release-assets.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.108.133, ...
Connecting to release-assets.githubusercontent.com (release-assets.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 23096144 (22M) [application/octet-stream]
Saving to: ‘ScopeFind-linux-v0.1.2’
ScopeFind-linux-v0.1.2 100%[==============================================>] 22.03M 106MB/s in 0.2s
2025-11-26 15:08:54 (106 MB/s) - ‘ScopeFind-linux-v0.1.2’ saved [23096144/23096144]
実行権限を与えます。
~/downloads$ chmod +x ScopeFind-linux-v0.1.2
そのあと、境変数 PATH に含まれているディレクトリ(例: ~/bin, /usr/local/bin など)にバイナリファイルを置くと、そのコマンドをどこからでも実行できるようになります。
~/downloads$ echo $PATH
/home/nishihama/local/bin:/home/nishihama/.juliaup/bin:/usr/local/texlive/2024/bin/x86_64-linux:/home/nishihama/anaconda3/bin:/home/nishihama/.cargo/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
私は今回は/home/nishihama/local/binに入れることにしました。
ScopeFind-linux-v0.1.2をそのディレクトリに移動させます。その際についでにファイル名も変更しておきましょう。
~/downloads$ mv ScopeFind-linux-v0.1.2 ~/local/bin/ScopeFind
さて、これで実行できるはずです。
~/downloads$ ScopeFind .
エラー
私の環境では以下のエラーが発生しました。
[PYI-1889218:ERROR] Failed to load Python shared library '/tmp/_MEIFTXWDd/libpython3.11.so.1.0': /lib/x86_64-linux-gnu/libm.so.6: version GLIBC_2.38' not found (required by /tmp/_MEIFTXWDd/libpython3.11.so.1.0)
エラーメッセージ /lib/x86_64-linux-gnu/libm.so.6: version 'GLIBC_2.38' not found と書いてあるので、
- GitHub Actions(
ubuntu-latest= 24.04)でビルドした ScopeFind は
glibc 2.38 以上 を要求している - でも、自分の Linux 環境は 2.38 未満(Ubuntu 22.04, Debian など)なので、
- 実行時に「そんなバージョンの glibc ないよ」と怒られている、という状態です。
PyInstaller のバイナリは glibc に動的リンクしているので、
ビルドに使った環境より「古い」glibc の環境では動かなくなったということです。
ですので、自身でコンパイルする必要があるというわけです。
流れは
- ソースコードを clone
- venv 作成(任意)
- PyInstaller でビルド
です。
git clone https://github.com/ddd3h/ScopeFind.git
cd ScopeFind
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install pyinstaller
pyinstaller --onefile ScopeFind.py --name ScopeFind
mv ./dist/ScopeFind ~/local/bin/.
これなら「ビルド時の glibc」と「実行時の glibc」が同じなので、
今回の GLIBC_2.38 エラーは出ません。
使い方
~/downloads$ ScopeFind [パス]
で使えます。[パス]は今回はカレントディレクトリにしましょう。
~/downloads$ ScopeFind .
立ち上がりました。
文字を入力すれば1秒後に、その文字が含まれてるファイルを探してくれます。
デフォルトでは、.py と .ipynb を対象としています。
Toggle .py を押して、.py: OFF にすれば、ASCIIファイルが対象になります。
さらに、Toggle binaryを押してBinary: ONにすれば、バイナリファイル(画像とかPDFとかすべて)も探してくれます。
ただ、バイナリファイルは重いですし、基本的には無意味な文字列が含まれてるだけです。たまたま、ファイル内にそのままの文字列が格納されておりヒットするとかそれぐらいはあるかもです。
なので、2MB以上のファイルはスキップするような設定にしてあります。
また検索結果は300を上限に表示するようにしてあります。
この設定を変更するには、コードを変えてコンパイルしてください。
試しに何か探してみます。
なんとなく「com」を検索してみます。
1件見つかったみたいです。436行目に「def compose」の com が引っかかったようです。
これぐらいのことは、もちろんfindコマンド、grepコマンドを使えば簡単にできますが、やはり楽してさらには高速化して、好きな機能を入れたいというのがありました。
ぜひこういうふうな機能を入れてほしいとかあれば言ってください。いい感じに入れときます。

