Tools

fd: tìm file đơn giản và nhanh hơn lệnh find

Tóm tắt

fd tìm file với cú pháp ngắn, mặc định bỏ qua file ẩn và file bị .gitignore. -e lọc đuôi, -t lọc loại, -H -I để tìm cả file ẩn, -x chạy song song từng file, -X gom thành một lệnh.

Lệnh find rất mạnh nhưng cú pháp khó nhớ: find . -type f -name "*.py" -not -path "*/node_modules/*" chỉ để tìm file Python. fd là lựa chọn thay thế đơn giản và nhanh: cú pháp ngắn, mặc định bỏ qua file ẩn và những gì .gitignore loại trừ, tô màu kết quả, và chạy lệnh song song trên từng kết quả. Nó không làm được mọi thứ find làm, nhưng xử lý gọn 90% tình huống hằng ngày.

Trang GitHub của sharkdp/fd
Trang GitHub của sharkdp/fd (ảnh chụp tháng 11/2026)

GitHub: https://github.com/sharkdp/fd · khoảng 45 nghìn sao · Rust · Apache-2.0/MIT

Cài đặt

brew install fd                  # macOS
sudo apt install fd-find         # Ubuntu/Debian: lệnh tên là fdfind
cargo install fd-find            # có Rust

# Trên Ubuntu
ln -s $(which fdfind) ~/.local/bin/fd

So sánh nhanh với find

Việc cần làmfindfd
File có "config" trong tênfind . -iname '*config*'fd config
Mọi file .pyfind . -name '*.py'fd -e py
Chỉ thư mụcfind . -type d -name 'test*'fd -t d '^test'
Gồm file ẩn và bị ignore(mặc định)fd -H -I pattern
Sửa trong 2 ngày gần đâyfind . -mtime -2fd --changed-within 2d

Mẫu tìm kiếm của fd mặc định là regex và dùng smart case: viết thường thì không phân biệt hoa thường, có chữ hoa thì phân biệt. Muốn dùng glob kiểu shell, thêm -g: fd -g '*.test.ts'.

Chạy lệnh trên từng kết quả

# -x: chạy song song cho từng file
fd -e jpg -x convert {} {.}.png

# -X: gom mọi kết quả vào MỘT lệnh
fd -e ts -X prettier --write

# Xoá các thư mục node_modules lồng nhau (cần -I vì chúng bị ignore)
fd -I -t d '^node_modules$' -X rm -rf
PlaceholderÝ nghĩaVí dụ với src/img/a.jpg
{}Đường dẫn đầy đủsrc/img/a.jpg
{.}Bỏ đuôi filesrc/img/a
{/}Chỉ tên filea.jpg
{//}Thư mục chasrc/img

Lưu ý

  • Không thấy file mình biết chắc tồn tại? Có thể nó bị .gitignore hoặc là file ẩn; thử thêm -H -I.
  • Cẩn thận khi ghép với rm: chạy lệnh fd không có -x/-X trước để xem danh sách sẽ bị xoá.
  • Loại thư mục cụ thể bằng -E, ví dụ fd -e log -E vendor.

Áp dụng thế nào?

  • Dev: Dùng fd làm nguồn cho fzf (FZF_DEFAULT_COMMAND='fd --type f') để tìm file nhanh như "Go to file" của IDE.
  • Tech Lead: Viết script dọn dẹp, chuyển đổi hàng loạt (ảnh, định dạng code) bằng -x/-X thay cho vòng lặp shell dễ lỗi khi tên file có khoảng trắng.
  • PM: Khi cần thống kê nhanh (bao nhiêu file test, file cấu hình), fd -e test.ts | wc -l cho con số ngay.

Nguồn & tham khảo

  1. sharkdp/fd — sharkdp (GitHub)