## 事象
濁点を含むファイルに対し、クエリに濁点をつけると検索結果にヒットしない。
```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)