# 報帳缺收據明細？五份只搜出三份，fd 要怎麼找齊

- 網址：https://blog.valenvan.uk/posts/sharkdp-fd.html
- 發布日期：2026-10-21
- 測試設備：Mac mini M4 Pro（12 核、64GB）
- 專案：sharkdp/fd（https://github.com/sharkdp/fd），Apache-2.0 授權
- 測試版本：fdfind 8.6.0（Debian fd-find 8.6.0-3 arm64；非最新版）
- 實測影片：https://www.youtube.com/shorts/I7zAyIxCx7c

## 重點摘要

- 自製10,007檔樣本含5份收據CSV，預設搜尋找到3份，加-H找到4份，加-HI找到5份。
- 兩份繁中收據檔名均被找到；另加CSV限制後留下1份。
- memo.txt僅內文含receipt，未出現在receipt檔名搜尋結果中。
- 主樣本搜尋前後10,007個檔案的數量、相對路徑與SHA256均相同。
- **結論：** 本次樣本加-HI後找到全部5份CSV，預設只找到3份。
- **適合：** 已會使用終端機、要依檔名片段找資料的人；此做法已找到5份樣本明細。
- **不適合：** 只記得檔案內文的人；本次內文含receipt的memo.txt未被列出。

| 實測項目 | 結果 |
|---|---|
| 主樣本檔案總數 | 10007 |
| 預設CSV收據搜尋 | 3 |
| 含隱藏CSV搜尋（-H） | 4 |
| 含隱藏且取消忽略（-HI） | 5 |
| 五次重跑秒數 | [0.006568, 0.006816, 0.007128, 0.007101, 0.006875] |
| 繁中收據檔名搜尋 | 2/2 |
| 繁中收據搜尋加CSV限制 | 1 |
| 主樣本完整性 | 檔數、路徑、SHA256相同 |

準備報帳，記得曾經存過一份交通費明細，卻想不起它在哪個月份的資料夾。檔名只記得一小段，逐層打開資料夾又很煩。這次用 fd 試一個具體問題：明明放了五份收據明細，為什麼第一次只找到三份？資料沒有消失，搜尋範圍才是關鍵。

測試設備是 Mac mini M4 Pro，12 核心、64GB 記憶體。受測的是 fd-find 8.6.0-3，執行檔顯示 fdfind 8.6.0，並非最新版。README 查閱版本為 `41ee5e954c55dd4b212a7ed2ed7ad6c9779a63b2`；這個 commit 代表文件依據，不是所裝套件的原始碼版本。安裝與版本確認的工具紀錄合計約 2.5 秒，不等於單獨下載耗時。

## 先把問題做成可核對的樣本

全部素材都是自製假資料：一萬份文字筆記、五份收據 CSV、一份忽略規則與一份內文提到 receipt 的筆記，共 10,007 個檔案。CSV 只有示範欄位與假金額，不是真實收據。三份明細在一般資料夾，一份在 `.backup`，另一份放進 `archive`；`.ignore` 裡寫了 `archive/`。

依 README 使用套件安裝方式，再替名稱加上連結，後面的指令才可直接寫 fd：

```bash
apt-get update -qq
apt-get install -y -qq fd-find
fdfind --version
ln -sf /usr/bin/fdfind /usr/local/bin/fd
```

這是本次實際使用的安裝方式，請先確認自己的套件名稱、安裝路徑與權限；錄影用的乾淨目錄才建立這個連結；已有同名檔案時不要覆蓋，可直接用 fdfind 取代後面的 fd。搜尋時先移到要整理的資料夾，限定只找 CSV 檔，不必把所有筆記都列出來。

```bash
cd /tmp/find-receipts
fd --color never -t f -e csv receipt
fd --color never -H -t f -e csv receipt
fd --color never -HI -t f -e csv receipt
```

![第一輪檔名搜尋，只列出三份一般資料夾的明細](https://blog.valenvan.uk/img/sharkdp-fd-article_1.png)

| 搜尋方式 | 本次找到 |
| --- | --- |
| 預設 | 3 份 CSV |
| 加上 -H，包含隱藏檔 | 4 份 CSV |
| 加上 -HI，另取消忽略規則 | 5 份 CSV |

`-H` 把隱藏檔納入，`-I` 取消忽略規則。這份樣本的五份 CSV 全都找回，不代表 fd 會復原已刪除的檔案，也不代表權限不足的目錄能讀取。用預設選項沒看到結果時，應先檢查範圍，再判斷檔案是否真的不在。

![擴大搜尋後，隱藏備份與封存資料夾的五份明細都出現](https://blog.valenvan.uk/img/sharkdp-fd-article_2.png)

## 找檔名，和找內文是兩回事

`memo.txt` 內文雖然寫著 receipt，搜尋 receipt 時仍沒列出它，因為這裡比對的是檔名。若只記得文件內一句話，這條指令無法回答。另建三份繁中檔名樣本，搜尋「收據」找到兩份；再限定 CSV，只留下其中一份。這是兩個指定檔名的結果，不能推論所有編碼或特殊符號都沒問題。

五次重跑完整搜尋，分別約 0.006568、0.006816、0.007128、0.007101、0.006875 秒。這是一萬份小檔案、已經讀取過的樣本，包含快取效果；沒有測整顆硬碟或網路磁碟，也沒有量人工整理時間，不能宣稱省下幾小時。主樣本搜尋前後的檔案數、相對路徑與 SHA256 全部一致，搜尋過程沒有改寫它們。

我的結論是：已經會用終端機、常常整理下載與封存資料的人，值得記住這組指令。若只想用滑鼠搜尋，或需要比對文件內文，這次的做法就不適合。它的價值在於少翻資料夾，但要先知道自己實際搜尋了哪些範圍。

專案：[sharkdp/fd](https://github.com/sharkdp/fd)。原始碼提供 MIT／Apache-2.0 雙授權，詳見專案的 LICENSE-MIT 與 LICENSE-APACHE。
