반응형
Linux의 디렉토리 탐색 명령어는 효율적이고 강력한 기능을 제공합니다. 오늘은 find
와 xargs
명령어를 사용하여 파일 및 디렉토리를 검색하고 작업을 자동화하는 방법을 배워보겠습니다. 다양한 실전 예제를 통해 활용법도 익혀보세요.
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. find
와 xargs
를 함께 사용하는 예제
(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. xargs
와 find
의 차이점 비교
기능 | 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의 find
와 xargs
명령어는 디렉토리 탐색 및 작업 자동화에 매우 유용합니다. 이 두 가지 도구를 함께 사용하면 효율성을 극대화할 수 있습니다. 실습을 통해 익숙해지세요!
반응형
'Linux Bash shell script' 카테고리의 다른 글
Bash Shell Script 백그라운드 실행 (&, jobs, fg, bg) (0) | 2025.01.30 |
---|---|
Bash Shell Script 파일 생성, 삭제, 복사 (touch, rm, cp, mv) (0) | 2025.01.29 |
Bash Shell Script 문자열 조작 (cut, awk, sed 활용) (0) | 2025.01.28 |
Bash Shell Script 배열 선언 및 접근 방법 (0) | 2025.01.27 |
Bash Shell Script 매개변수와 반환값 처리 (0) | 2025.01.26 |