Post

exec vs pipe

exec vs pipe

리눅스 find-exec, 파이프(|) 비교

리눅스에서 파일 검색과 처리 시 자주 쓰이는 find, -exec, 파이프(|)의 차이와 사용법을 정리합니다.


1. find

특정 경로에서 파일/디렉터리를 검색할 때 사용합니다.

1
find [경로] [조건] [옵션]

예시

1
2
# 현재 디렉터리부터 .txt 파일 찾기
find . -name "*.txt"

조건 예시

  • -type f → 일반 파일만
  • -type d → 디렉터리만
  • -name "파일명" → 이름 기준
  • -mtime -1 → 수정한 지 1일 이내

2. -exec

find로 찾은 파일에 대해 명령어를 실행합니다.

1
find [경로] [조건] -exec [명령어] {} \;
  • {}find가 찾은 각 파일 자리
  • \; → 명령어 끝
  • + → 여러 파일을 한 번에 명령어 인자로 전달

예시

1
2
3
4
5
# 각 파일 용을 출력
find . -name "*.txt" -exec cat {} \;

# 여러 파일을 한 번에 처리
find . -name "*.txt" -exec cat {} +

특징

옵션동작 방식장점/단점
\;파일마다 1번 실행안전하지만, 파일 많으면 느림
+여러 파일 한 번에 실행빠르지만 명령어가 여러 파일 처리 가능해야 함

3. 파이프(|)와 xargs

find 출력(파일 경로)을 다른 명령어 입력으로 전달할 때 사용합니다.

1
find . -name "*.txt" | xargs cat
  • 장점: 여러 파일을 한 번에 처리 → 성능 좋음
  • 단점: 파일 이름에 공백/특수문자가 있으면 깨질 수 있음
  • 안전하게 사용:
1
find . -name "*.txt" -print0 | xargs -0 cat

4. -exec vs | xargs 비교

| 특징-exec| xargs
|————–——————————————————
| 동작각 파일마다 명령 실행표준 입력으로 명령 실행
| 공백 처리안전주의 필요 (-0 옵션 필요)
| 성능\; → 느림, + → 빠름여러 파일 묶어서 → 빠름
| 사용 편의성간단파이프와 조합 필요

5. 주의 사항

  • -execfind 전용 옵션이며, 다른 명령어에서는 사용할 수 없음.
  • 다른 명령어에서 비슷한 기능을 사용하려면 xargs를 활용해야 함.
1
2
# 예: ls와 xargs로 파일 삭제
ls *.txt | xargs rm

6. 결론

  • 안전성 우선: -exec 사용
  • 성능 우선, 대량 파일 처리: xargs 또는 -exec … + 사용
  • 공백/특수문자 처리: -exec 또는 xargs -0 사용
This post is licensed under CC BY 4.0 by the author.