Computer >> 컴퓨터 >  >> 시스템 >> Linux

리눅스와 macOS에서 fd 명령어로 파일을 빠르게 찾는 방법

리눅스와 macOS에서 fd 명령어로 파일을 빠르게 찾는 방법

fdfind 명령어보다 훨씬 간단하게 사용할 수 있는 대안 도구입니다. 축약된 문법과 간결한 명령 구조를 채택하여 입력해야 하는 명령을 짧고 핵심적으로 유지해 줍니다. 다만, 장황하지 않은 덕분에 타이핑은 쉬워지지만 그만큼 의미를 파악하기는 다소 어려울 수 있습니다. 또한 fd는 기본 find 명령어보다 패턴 매칭 속도가 더 빠릅니다. 이 글에서는 리눅스와 macOS에서 fd를 설치하고 활용하는 방법을 알아보겠습니다.

리눅스에 fd 설치하기

fd는 많은 시스템에 기본적으로 포함되어 있지 않습니다. 선호하는 패키지 관리자로 프로그램을 다운로드하고 설치한 뒤, 터미널에서 바로 실행할 수 있습니다.

Ubuntu

Ubuntu Disco Dingo 19.04부터는 기본 저장소에 포함되어 있지만, 그 외 버전에서는 직접 다운로드하여 설치해야 합니다. Ubuntu 및 기타 Debian 계열 배포판에서는 아래 명령어로 설치할 수 있습니다.

wget https://github.com/sharkdp/fd/releases/download/v7.3.0/fd-musl_7.3.0_amd64.deb
sudo dpkg -i fd-musl_7.3.0_amd64.deb

32비트 버전이나 다른 빌드가 필요하다면 fd의 GitHub 릴리스 페이지에서 다운로드하세요.

Debian

Debian Buster 이상 버전에서는 공식 Debian 저장소를 통해 fd를 설치할 수 있습니다.

sudo apt-get install fd-find

Fedora

Fedora 28부터는 공식 패키지로 fd를 설치할 수 있습니다.

dnf install fd-find

Arch Linux

마찬가지로 Arch 사용자는 공식 저장소에서 fd를 설치할 수 있습니다.

pacman -S fd

Gentoo Linux

Gentoo 사용자는 아래 명령어로 fd ebuild를 설치합니다.

emerge -av fd

macOS

macOS 환경이라면 먼저 Homebrew를 설치한 후, 아래 명령어로 fd를 설치하세요.

brew install fd

리눅스에서 fd 사용하기

리눅스와 macOS에서 fd 명령어로 파일을 빠르게 찾는 방법

fd 명령어의 기본 구조는 fd pattern이며, 이는 find . -iname 'pattern'과 비교됩니다.

파일 이름으로 파일을 검색하려면 다음과 같이 입력합니다.

fd filename

이 명령은 현재 작업 디렉터리와 하위 디렉터리 전체를 대상으로 검색합니다. 특정 디렉터리 안에서 검색하려면 검색어 뒤에 경로를 지정하면 됩니다.

fd filename /path/to/search

검색 결과에 명령 실행하기

find와 마찬가지로 fd 역시 찾아낸 파일을 다른 명령어에 전달하여 실행하는 기능을 제공합니다. find에서는 find . -iname pattern -exec command 형태를 사용하지만, fd에서는 -x 옵션을 사용합니다.

fd -e zip -x unzip

위 명령은 디렉터리 내 모든 zip 파일을 unzip 명령으로 전달합니다. 실행 명령의 "구문" 안에서는 아래와 같은 특수 기호를 사용해 정보를 원하는 형태로 전달할 수 있습니다.

  • {}: 검색 결과의 전체 경로로 대체되는 플레이스홀더 (files/images/portrait.jpg)
  • {/}: 결과 파일명만으로 대체되는 플레이스홀더로, UNIX 사용자들이 'basename'이라 부르는 값 (portrait.jpg)
  • {//}: 발견된 항목의 상위 디렉터리 경로로 대체 (files/images)
  • {.}: 확장자를 제외한 파일 경로로 대체 (files/images/portrait)
  • {/.}: 확장자를 제외한 basename으로 대체 (portrait)

위에서 소개한 플레이스홀더 두 가지를 활용한 예시를 살펴보겠습니다.

fd -e flac -x ffmpeg -i {} -c:a libopus {.}.opus

이 명령은 flac 파일을 찾아 ffmpeg로 변환하여 opus 형식으로 저장합니다.

기타 유용한 fd 옵션

  • -e: 파일 확장자만 검색합니다. 점(.) 없이 확장자를 지정합니다.
  • -E pattern: 지정한 패턴과 일치하는 결과를 제외합니다.
  • --changed-newer-than date|duration: 파일 수정 시간을 기준으로 결과를 필터링합니다. 지정한 날짜보다 나중에 수정된 파일만 표시됩니다. 현재 시점부터 거꾸로 계산하는 기간(10h, 1d, 35min) 또는 특정 시각("YYYY-MM-DD HH:MM:SS")으로 설정할 수 있습니다.
  • --changed-older-than date|duration: 위 옵션과 반대로, 지정한 날짜나 기간 이전에 수정된 파일을 표시합니다.
  • -t: 지정한 유형의 항목만 표시합니다 (-tf 일반 파일, -td 디렉터리, -tx 실행 파일, -tl 심볼릭 링크, -te 빈 파일).
  • -p: 파일명뿐 아니라 전체 경로를 대상으로 검색합니다.
  • -s: 대소문자를 구분하도록 강제합니다. 기본적으로 fd는 검색 패턴에 대문자가 포함된 경우에만 대소문자를 구분합니다.
  • -H: 숨김 파일과 숨김 디렉터리를 결과에 포함합니다.
  • -L: 심볼릭 링크된 디렉터리까지 따라 들어가 검색합니다.

fd는 find 명령어의 훌륭한 대안입니다. find 명령어가 사용하기 어렵다고 느껴졌다면 fd를 사용해 보세요. 직접 사용해 보고 여러분에게 유용한지 확인해 보시기 바랍니다.