파일을 `fd`할 수 있는데 파일을 `찾아`야 하는 이유 ;)

터미널을 자주 사용하는 경우 GNUfind 명령을 사용하여 파일 위치를 알아야 합니다. 그러나 파일 수가 증가함에 따라 find 의 런타임이 크게 증가하는 것을 볼 수 있습니다. 이것은 동생 fd 이 사진에 나오는 곳입니다 ;)

README of the project에 따르면 fd의 일부 하이라이트는 다음과 같습니다.
  • 병렬 디렉토리 통과로 인해 매우 빠릅니다.
  • 색상을 사용하여 다양한 파일 유형을 강조 표시합니다(ls와 동일).
  • 명령 이름이 find :-)보다 50% 짧습니다.

  • 설치를 위해 brew , apt , dnf , pacman , emerge , zypper 등의 대부분의 패키지 관리자는 fd 패키지를 가지고 있으므로 표준 설치 명령을 실행할 수 있습니다. 자세한 내용은 사용 중인 시스템의 installation guide을 참조하십시오.

    Note that for Debian based distros like Ubuntu and others, you will have to install fdfind because fd is already used by a different package. You can see the guide how to use fd on Ubuntu instead of fdfind. Spoiler alert: It's not about creating alias. xD



    개인적으로 나는 fd 의 속도에 매우 감동했습니다. find가 완료될 때까지 몇 초 동안 기다려야 했을 때 fd는 1초 이내에 작업을 수행합니다. 또한 regex 를 알고 있다면 fd 검색에 정규식을 사용하므로 큰 축복입니다.

    비교를 통해 몇 가지 수치를 얻습니다.
    .png로 검색된 내 홈 디렉토리의 모든find 파일 수:

    # Do a regex search with `find` with ignoring case
    # and piping output to `wc -l` which will count number
    # of lines in result 
    find ~/ -iregex '.*\.png$' 2>/dev/null | wc -l
    # 13530 results found
    

    .png로 검색된 내 홈 디렉토리의 모든fd 파일 수:

    # Same regex, but now with `fd`
    # -H flag to search in hidden directories
    # -I to not ignore any files. `fd` ignores files like
    # .gitignore, .ignore, .fdignore
    
    fd -HI '.*\.png$' ~/ 2>/dev/null | wc -l
    # 13530 results found
    


    따라서 결과의 수는 두 경우 모두 동일합니다.

    이제 각 명령에 걸리는 시간을 살펴보겠습니다.
  • find :

  • time (find ~/ -iregex '.*\.png$' >/dev/null 2>&1)
    
    # real    0m3.892s
    # user    0m2.944s
    # sys     0m0.937s
    


  • fd :

  • time (fd -HI '.*\.png$' >/dev/null 2>&1)
    
    # real    0m0.607s
    # user    0m2.110s
    # sys     0m1.779s
    


    보시다시피 fd는 GNU find보다 6배 이상 빠릅니다. 파일을 자주 찾으면 절약되는 시간이 상당히 중요합니다! fd의 힘을 경험하는 것은 fzfdmenu와 같은 다른 프로그램으로 쉽게 수행할 수 있습니다.

    내 시스템에 대한 위 명령 및 해당 출력의 스크린샷:

    좋은 웹페이지 즐겨찾기