## 事象 濁点を含むファイルに対し、クエリに濁点をつけると検索結果にヒットしない。 ```console $ ll | grep scpt .rwxr-xr-x@ 532 11 Jun 16:18 ガーベージコレクション.scpt $ fd ガーベージ ``` 濁点を含まないクエリだとヒットする。 ```console $ fd コレクション ガーベージコレクション.scpt ``` ### 環境 | 対象 | バージョン | | ----------- | ------ | | [[macOS]] | 15.5 | | [[Ghostty]] | 1.1.3 | | [[fd]] | 10.2.0 | ### 参考 [[grep]]でもヒットしない。 ```console $ ll | grep ガーベージ ``` `ls` や `ll` に[[glob]]指定だとヒットする。 ```console $ ll ガーベージ* .rwxr-xr-x@ 532 11 Jun 16:18  ガーベージコレクション.scpt ``` ## 原因 ファイル名が[[NFD]]で[[Unicode正規化]]されている、または[[UTF-8-MAC]]になっているから。[[fd]]や[[grep]]で指定したクエリは通常キーボードから入力されるため[[NFC]]であることが多く、濁点のように分解されるものは期待通りヒットしない。 `ガ` という文字を[[NFD]]と[[NFC]]の場合でバイナリ確認した場合は以下のように差分が出る。 ``` $ hexdump hex-nfd.txt 0000000 82e3 e3ab 9982 000a 0000007 $ hexdump hex-nfc.txt 0000000 82e3 0aac 0000004 ``` ## 解決方法 [[convmv]]で[[NFC]]正規化する。[[カレントディレクトリ配下をNFC正規化]]するのがよい。 ```console convmv -r -f utf8 -t utf8 --nfc --notest . ``` > [!question]- ファイル指定だと上手くいかない? > > 以下では[[NFC]]正規化できなかった... [[NFD]]正規化はできるけど。 > ```console > convmv -f utf8 -t utf8 --nfc --notest $filename > ``` ## 参考 - [誤解の多い「NFD問題とUTF-8-MAC問題」を解説する - macOSの濁点を含むファイル名の扱い - Qiita](https://qiita.com/ko1nksm/items/3a66197efd1c096a801f)