안녕하세요 10번째 시간입니다. 이번 시간에는 리눅스 시스템에서 탐색기 역할을 하는 findutils를 빌드해 보겠습니다.
빌드하기 앞서 findutils의 역할과 구성에 대해 알아봅시다.
1. findutils의 역할
Findutils는 리눅스 시스템에서 파일과 디렉토리를 찾아내는 '탐색기'역할을 합니다.
단순히 이름을 검색하는 것을 넘어, 파일의 속성(권한, 크기, 시간 등)을 조합해 복잡한 탐색을 수행하는 도구들의 모음입니다.
2. findutils의 구성
이 패키지는 크게 세 가지 핵심 도구로 구성되어 있으며, 각각의 역할이 매우 뚜렷합니다.
- find : 실시간 탐색(Real-time) 역할을 하며, 현재 디렉토리 트리를 직접 뒤져서 조건에 맞는 파일을 찾습니다. 가장 정교합니다.
- locate : 데이터베이스 검색(Fast) 역할을 하며, 미리 색인(Index)된 데이터베이스에서 이름을 검색합니다. 실시간은 아니지만 속도가 압도적입니다.
- xargs : 명령어 가공(Bridge) 역할을 하며, find가 찾아낸 목록을 받아서 다음 명령어의 인자로 넘겨주는 가공 역할을 합니다.
각 도구 역할
- find : 조건부 탐색의 끝판왕
- find는 단순히 파일명을 찾는 도구가 아닙니다. 다음과 같은 복잡한 질문에 답을 줄 수 있습니다.
- "지난 24시간 동안 수정된 파일 중 용량이 100MB 이상인 것만 골라줘."
- "소유자가 root인데 일반 유저도 실행 권한이 있는 위험한 파일을 찾아줘."
- 작동원리는 파일 시스템의 디렉토리 구조를 재귀적(Recursive)으로 순회하며 각 파일의 inode(파일의 메타데이터)를 직접 확인합니다.
- 예시 1 : find / -type f -mtime -1 -size +100M 2>/dev/null
/ : 전체 시스템 기준으로 검색
-type f : 일반 파일만
-mtime -1 : 최근 1일(24시간) 이내 수정
-size +100M : 100MB 초과 파일
2>/dev/null : 권한 에러 숨김 - 예시 2 : find / -type f -user root -perm -001 2>/dev/null
-user root : 소유자가 root
-perm -001 : 기타 사용자(other) 실행 권한이 반드시 있는
- 예시 1 : find / -type f -mtime -1 -size +100M 2>/dev/null
- locate & updatedb : 고속 검색 엔진
- updatedb : 시스템 전체를 스캔해서 파일 목록을 데이터베이스(.db)로 만듭니다. (LFS에서는 보통 크론탭 등으로 주기적 실행합니다.)
- locate : 이 데이터베이스만 뒤지기 때문에 하드디스크를 직접 읽지 않아 속도가 매우 빠릅니다.
- 예시 1 : updatedb
파일 시스템을 스캔해서 locate가 사용할 데이터베이스를 새로 만듦 - 예시 2 : locate -b '\passwd'
경로 전체가 아니라 파일명 기준으로 passwd를 찾음 - 예시 3 : locate '*.conf'
.conf파일들을 DB에서 빠르게 검색 / 특정 확장자 파일 찾는 데 사용됨
- 예시 1 : updatedb
- xargs : 효율적인 대량 처리
- find가 파일 10,000개를 찾았을 때, 이를 하나씩 처리하면 시스템 부하가 큽니다. xargs는 이 목록을 적절한 덩어리(Chunk)로 나누어 다음 명령어에 전달합니다.
- 예시 1 : find . -namem "*.log" | xargs rm -f (찾은 모든 로그 파일을 한 번에 삭제)
- find가 파일 10,000개를 찾았을 때, 이를 하나씩 처리하면 시스템 부하가 큽니다. xargs는 이 목록을 적절한 덩어리(Chunk)로 나누어 다음 명령어에 전달합니다.
3. findutils-4.10.0 빌드
1. 소스 준비 및 이동(lfs 유저)
cd $LFS/sources
tar -xvf findutils-4.10.0.tar.xz
cd findutils-4.10.0
2. 설정(Configure)
./configure --prefix=/usr \
--host=$LFS_TGT \
--build=$(build-aux/config.guess)
3. 컴파일 및 설치
make
make DESTDIR=$LFS install
4. 뒷정리
cd $LFS/sources
rm -rf findutils-4.10.0
5. 설치 완료 테스트
find --version
xargs --version
find --version 및 xargs --version 명령어를 실행하여 findutils가 정상적으로 설치되었는지 확인해 봅니다.

이것으로 findutils 빌드를 마쳤습니다. findutils는 리눅스 환경에서 파편화된 파일들 사이의 관계를 정의하고, 조건에 맞는 대상을 정확히 추출해 가공할 수 있게 해주는 도구모음입니다. 리눅스 시스템의 대부분이 파일 시스템 구조 위에 세워져 있다는 점을 고려할 때, 이 도구를 자유자재로 다루는 것은 곧, 시스템의 흐름을 제어하는 것과 같다고 느꼈습니다.
결론적으로 findutils는 검색 도구를 넘어, 데이터를 분류하고 조건을 걸어 원하는 시스템 상태를 유지하게 돕는 운영의 핵심 엔진입니다. 쉘 스크립트 자동화나 인프라 보안 점검에서 왜 이 패키지가 빠지지 않고 등장하는지 깊이 공감할 수 있는 시간이었습니다.
오늘도 긴 글 읽어주셔서 감사합니다.
'리눅스 > LFS' 카테고리의 다른 글
| [LFS12] Patch 빌드 (0) | 2026.04.08 |
|---|---|
| [LFS11] IANA-etc 패키지 빌드 (1) | 2026.03.31 |
| [LFS9] 텍스트 가공 및 분석의 유틸리티 Gawk 패키지 빌드 (0) | 2026.03.11 |
| [LFS8] 파일 및 디렉토리 검사를 위한 Diffutils 빌드 (0) | 2026.03.04 |
| [LFS7] 기본적인 명령어의 패키지 Coreutils 빌드 (0) | 2026.02.25 |