Unix/Linux 的 fd 指令使用
fd 和 rg 一樣是用 rust 寫的多線程工具,一個要替代 find,另一個替代 grep,一樣都會自動忽略隱藏檔案和套用 .gitignore 規則。
常用參數
-e, --extension
: 指定副檔名-E, --exclude
: 排除目錄或檔案-g, --glob
: 設定 GLOB 語法-t f|d|l
: 限定搜尋類型(檔案、資料夾、symbolic link)-H
: 包含隱藏檔-I
: 忽略.gitignore
-uu
: 搜索一切,包括隱藏、忽略、binary-x
: 搭配執行指令,例如刪除、移動-0
: 輸出 null 分隔,方便搭配xargs -0
--search-path
: 指定搜尋路徑(預設是 .)--exec-batch
: 多檔案批次執行(比 find/exec 更現代)
常用範例
刪除檔案
- 刪除圖片檔
fd -e jpg -e jpeg -e png -e gif -t f /path/to/directory -x rm
- 刪除 .DS_Store
fd -H -t f -a -g '.DS_Store' /path/to/directory -x rm
列出所有 test 開頭的 Python 檔案
fd '^test' -e py
排除多個 pattern
fd -E "{pattern1,pattern2}" . -e md
找出所有含圖檔的 markdown
fd -e md -x rg -i '\.(jpg|jpeg|png|gif)'
# 等效
fd -e md -x grep -iE '\.(jpg|jpeg|png|gif)' {}
# 也等效以下
find . \( -path '*/node_modules/*' -o -path '*/cache/*' -o -path './.git' \) -prune -o -type f -name '*.md' -exec grep -iE '\.(jpg|jpeg|png|gif)' {} \;