# fd - `find`의 간단하고 빠르며 사용자 친화적인 대체제

> Clean Markdown view of GeekNews topic #19850. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=19850](https://news.hada.io/topic?id=19850)
- GeekNews Markdown: [https://news.hada.io/topic/19850.md](https://news.hada.io/topic/19850.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-03-20T09:39:52+09:00
- Updated: 2025-03-20T09:39:52+09:00
- Original source: [github.com/sharkdp](https://github.com/sharkdp/fd)
- Points: 13
- Comments: 2

## Summary

`fd`는 파일 시스템에서 항목을 찾기 위한 프로그램으로, `find` 명령어보다 간단하고 빠르며 사용자 친화적입니다. `fd`는 직관적인 문법과 병렬 디렉토리 탐색을 통해 빠른 성능을 제공하며, 정규 표현식 및 glob 패턴을 지원하고 파일 유형에 따른 색상 강조 기능을 갖추고 있습니다. 또한, `fd`는 숨김 파일 및 디렉토리를 기본적으로 무시하고, `.gitignore` 패턴을 따르며, 다양한 명령어 옵션을 통해 유연한 검색을 지원합니다.

## Topic Body

- `fd`는 파일 시스템에서 항목을 찾기 위한 프로그램으로, 기존 `find` 명령어보다 간단하고 빠르며 사용자 친화적인 대안임  
  - `find`의 모든 기능을 지원하지는 않지만, 일반적인 사용 사례에 대해 합리적인 기본값 제공  
- 윈도우,맥,리눅스  
- **직관적인 문법**: `fd PATTERN` 형식으로 간단하게 사용 가능 (`find -iname '*PATTERN*'`보다 간편함)  
- **정규 표현식 및 glob 패턴 지원**  
- **병렬 디렉토리 탐색**으로 빠른 성능 제공  
- **파일 유형에 따른 색상 강조** (`ls`와 유사)  
- **병렬 명령 실행** 지원  
- **스마트 대소문자 구분**: 기본적으로 대소문자 무시, 대문자 포함 시 대소문자 구분  
- **숨김 파일 및 디렉토리 기본적으로 무시**  
- **`.gitignore` 패턴 기본적으로 무시**  
- **명령어 이름이 `find`보다 50% 짧음**  
  
### 사용법  
- 현재 디렉토리에서 패턴이 포함된 항목 검색  `fd netfl`  
- 정규 표현식을 사용한 검색 가능 `fd '^x.*rc$'`  
- 특정 디렉토리에서 검색 `fd passwd /etc`  
- 현재 디렉토리 아래의 모든 파일 목록 재귀적으로 리스팅 `fd`  
- 특정 파일 형식 검색 가능 (-e 옵션 사용) `fd -e md`  
- 정확한 파일명 검색 가능 (-g 옵션 사용) `fd -g libc.so /usr`  
- 숨김 파일 및 무시된 파일 포함 검색 (-H, -I 옵션 사용) `fd -H pre-commit` `fd -I num_cpu`  
- 파일 이름이 아닌 전체 경로에서 검색 (-p 옵션 사용) `fd -p '.*/lesson-\d+/[a-z]+.(jpg|png)'`  
- 검색된 각 결과에 대해 명령 실행 (-x) `fd -e zip -x unzip`  
- 모든 검색 결과를 하나의 명령에 전달 (-X) `fd -g 'test_*.py' -X vim`  
- 자리 표시자(Placeholder) 구문  
  - {}: 검색 결과 전체 경로  
  - {.}: 파일 확장자 제외 경로  
  - {/}: 파일명  
  - {//}: 부모 디렉토리  
  - {/.}: 파일명에서 확장자 제외  
- 특정 디렉토리 또는 파일 제외 가능 (-E 옵션 사용) `fd -H -E .git`  
- .fdignore 파일을 만들어 전역 제외 패턴 설정 가능   
- 검색된 파일 삭제 가능 (-X rm) `fd -H '^\.DS_Store$' -tf -X rm`  
  
### 주요 명령어 옵션  
- -H: 숨김 파일 및 디렉토리 포함 검색  
- -I: .gitignore 및 .fdignore 무시  
- -p: 전체 경로에서 검색  
- -e: 특정 확장자 검색  
- -x: 검색 결과에 명령 실행  
- -X: 모든 검색 결과를 하나의 명령에 전달  
- -E: 특정 파일 또는 디렉토리 제외  
  
### 성능 비교 (Benchmark)  
- 750,000개 디렉토리와 400만 개 파일에서 검색 테스트 결과  
  - find 성능: 약 19.9초  
  - fd 성능: 약 854.8ms  
- **find보다 23배 빠름**  
  
### 다른 프로그램과의 통합  
  
- fd 검색 결과를 fzf에서 표시 가능 `export FZF_DEFAULT_COMMAND='fd --type file'`  
- fd 출력 결과를 rofi에서 메뉴로 표시 `fd --type f -e pdf . $HOME | rofi -dmenu`  
- 출력 결과를 트리 구조로 표시 `fd | tree --fromfile`  
- 검색 결과를 xargs에서 사용 가능 `fd -0 -e rs | xargs -0 wc -l`

## Comments



### Comment 36161

- Author: dbs0829
- Created: 2025-03-20T16:39:36+09:00
- Points: 1

neovim plugin 중에서 fd 사용하는 녀석이 있어서, 설치했다가 지금까지 쓰고 있네요 ㅎㅎ.

### Comment 36125

- Author: neo
- Created: 2025-03-20T09:39:52+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=43410692) 
- Alfred workflow를 출시했음. 사용자 정의 디렉토리를 검색하는 데 fd를 많이 사용함. 매일 사용하며 매우 훌륭함
  - Hyperfine도 과소평가된 훌륭한 도구임
- sharkdp의 팬임. 매일 사용하는 멋진 소프트웨어를 만들어줘서 고마움
  - bat, fd, hexyl, hyperfine을 사용함
  - 잘 보상받는 엔지니어들이 매달 $10씩 기부하면 인터넷이 더 나아질 것임
  - 많은 훌륭한 도구들이 있으며, 이를 지원하는 생태계를 만들어야 함
- fd, bat, numbat, hexyl, hyperfine을 빠르게 설치하고 스크린샷을 Terminal Trove에서 볼 수 있음
  - fd, bat, numbat, hyperfine, hexyl의 링크 제공
  - 설치와 스크린샷 확인 가능
- fd와 rg의 플래그가 일치했으면 좋겠음. 예를 들어, fd와 rg 모두 --type 플래그가 있지만 의미가 다름
  - fd는 파일/디렉토리/심볼릭 링크 등을 의미하고, rg는 파일 MIME 타입을 의미함
  - fd에는 --extension 플래그가 있지만 rg에는 없음
  - 두 도구의 사용이 높은 상관관계를 가지므로 유사한 이름의 플래그가 유익할 것임
- 새로운 Rust 도구를 사용하지 않는 이유는 원래 도구의 옵션을 기억하기 어려워서임
  - ripgrep을 VS Code에서 사용하지만 명령줄에서는 grep을 사용함
  - 도구가 작동하기만 하면 어떤 언어로 작성되었는지는 상관없음
  - GNU Stow는 Perl로 작성되었지만 좋아하는 Unix 도구 중 하나임
  - Rust 도구가 드롭인 대체품이라도 수동으로 설치하지 않을 것임
  - 사용자로서 속도 개선과 메모리 안전성은 중요하지 않음
  - Go 같은 다른 언어도 메모리 안전성을 보장하며, 커뮤니티 참여도 높음
  - Rust가 구세주라는 서사에 완전히 설득되지 않음
  - macOS나 Ubuntu가 Rust 대체품으로 교체해도 워크플로우에 지장이 없다면 불만 없음
- Terminal Trove를 가끔씩 확인해야 함
  - 자주 사용하는 도구의 쉬운 대체품을 찾을 수 있음
  - find는 fd로, time은 hyperfine으로, grep은 ripgrep으로 대체 가능
  - asciinema를 .gif로 변환하는 t-rec, 수동으로 커밋 생성하는 koji 등
- fd를 사용해볼 예정임. find의 인수 사용법을 기억하기 어려워서 find . | grep what_i_am_looking_for를 주로 사용함
  - xargs와 통합된 동작이 마음에 듦
  - fd가 symlink 디렉토리 탐색을 어떻게 처리하는지 찾지 못했음
- 매일 fd를 많이 사용하며 새 기기에 기본 설치함
  - find를 오랫동안 사용했지만 편리한 사용성은 아님
  - 최근 대체 유틸리티 트렌드에 100% 동의함
  - 원래의 유연성을 모두 유지하지 않을 수도 있지만 일반적인 경우에 사용하기 훨씬 쉬움
- 기본적으로 많은 폴더를 무시하는 것이 불편함
  - 시스템 어디에 있는지 알고 싶을 때 find를 사용함
  - fd에 무시하지 않는 옵션이 있지만 기억하지 못해 find로 돌아감
- 새로운 Rust CLI 도구를 좋아하지만 fd는 tar와 ln처럼 사용법을 기억하기 어려움
  - 누구의 잘못도 아님
  - 항상 매뉴얼을 다시 읽어야 함
  - GNU find의 특이점에도 불구하고 더 잘 기억됨
