懶惰之最|GitHub 實測

報帳缺收據明細?五份只搜出三份,fd 要怎麼找齊

2026-10-21|專案:sharkdp/fd|Markdown 版

重點摘要

  • 自製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:

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 檔,不必把所有筆記都列出來。

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

第一輪檔名搜尋,只列出三份一般資料夾的明細

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

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

擴大搜尋後,隱藏備份與封存資料夾的五份明細都出現

找檔名,和找內文是兩回事

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

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

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

專案:sharkdp/fd。原始碼提供 MIT/Apache-2.0 雙授權,詳見專案的 LICENSE-MIT 與 LICENSE-APACHE。

測試設備:Mac mini M4 Pro(12 核、64GB)。內容依實際執行結果撰寫,數據為撰寫當時的實測值。

← 所有實測