Linux Bash shell script

Bash Shell Script 디렉토리 탐색 (find, xargs)

임베디드 친구 2025. 1. 29. 10:22
반응형

Linux의 디렉토리 탐색 명령어는 효율적이고 강력한 기능을 제공합니다. 오늘은 findxargs 명령어를 사용하여 파일 및 디렉토리를 검색하고 작업을 자동화하는 방법을 배워보겠습니다. 다양한 실전 예제를 통해 활용법도 익혀보세요.


1. find 명령어 소개

find는 파일 및 디렉토리를 검색할 때 사용하는 강력한 명령어입니다. 디렉토리 트리를 따라 원하는 조건에 맞는 파일을 찾을 수 있습니다.

기본 문법

find [검색할 경로] [옵션] [조건]

주요 옵션

  • -name : 파일 이름으로 검색
  • -type : 파일 유형으로 검색 (f는 파일, d는 디렉토리)
  • -size : 파일 크기로 검색
  • -mtime : 최근 수정된 시간으로 검색
  • -exec : 검색된 파일에 대해 명령 실행

2. find 명령어 예제

(1) 특정 이름의 파일 찾기

find /home/user -name "*.txt"
  • /home/user 디렉토리에서 모든 .txt 파일을 검색합니다.

(2) 특정 크기의 파일 찾기

find /var/log -size +10M
  • /var/log 디렉토리에서 크기가 10MB 이상인 파일을 찾습니다.

(3) 최근 7일 이내에 수정된 파일 찾기

find /etc -mtime -7
  • /etc 디렉토리에서 최근 7일 이내에 수정된 파일을 검색합니다.

(4) 특정 파일 삭제

find /tmp -name "*.log" -exec rm {} \;
  • /tmp 디렉토리에서 모든 .log 파일을 삭제합니다.

3. xargs 명령어 소개

xargs는 표준 입력으로 받은 데이터를 명령의 인수로 변환하는 유용한 도구입니다. find와 함께 사용하면 대량 작업을 효율적으로 처리할 수 있습니다.

기본 문법

xargs [옵션] [명령]

주요 옵션

  • -I : 입력값을 명령에서 사용할 자리 표시자로 지정
  • -n : 한 번에 처리할 입력값의 수를 제한
  • -p : 명령 실행 전에 사용자 확인

4. findxargs를 함께 사용하는 예제

(1) 특정 파일을 찾아 삭제하기

find /tmp -name "*.tmp" | xargs rm
  • /tmp 디렉토리에서 모든 .tmp 파일을 찾아 삭제합니다.

(2) 파일 이름 출력과 처리 확인

find /var/log -name "*.log" | xargs -I {} echo "파일 처리: {}"
  • /var/log 디렉토리에서 .log 파일을 찾고 파일 이름을 출력합니다.

(3) 병렬 처리로 파일 압축하기

find /data -name "*.txt" | xargs -n 5 -P 4 gzip
  • /data 디렉토리에서 .txt 파일을 5개씩 묶어 4개의 병렬 프로세스로 압축합니다.

5. xargsfind의 차이점 비교

기능 find xargs
파일 검색 지원 지원하지 않음
명령 실행 지원 (-exec) 지원 (명령어와 함께 사용 가능)
대량 작업 처리 제한적 (-exec 사용 시 느림) 고성능 (병렬 처리 가능)
표준 입력 활용 지원하지 않음 지원

6. 실전 Shell Script 예제

특정 디렉토리에서 큰 파일을 찾아 압축하기

#!/bin/bash

# 검색할 디렉토리와 크기 설정
SEARCH_DIR="/var/log"
SIZE="+100M"

# 큰 파일을 찾아 압축
find $SEARCH_DIR -size $SIZE | xargs -I {} gzip {}

echo "완료: $SEARCH_DIR 내 $SIZE 이상의 파일이 압축되었습니다."

최근 수정된 파일 목록 저장

#!/bin/bash

# 검색할 디렉토리와 저장 파일
SEARCH_DIR="/home/user"
OUTPUT_FILE="recent_files.txt"

# 최근 3일 이내 수정된 파일 찾기
find $SEARCH_DIR -mtime -3 > $OUTPUT_FILE

echo "완료: 최근 수정된 파일 목록이 $OUTPUT_FILE에 저장되었습니다."

마무리

Linux의 findxargs 명령어는 디렉토리 탐색 및 작업 자동화에 매우 유용합니다. 이 두 가지 도구를 함께 사용하면 효율성을 극대화할 수 있습니다. 실습을 통해 익숙해지세요!

반응형