반응형
리눅스 find 명령어
리눅스 find 명령어는 자주 사용하는 편인데, 생각보다 유용한 옵션이 많아서 이번 기회에 정리해본다.
사용방법은 다음과 같다.
- find [옵션] [경로] [표현식]
아래 명령어를 실행해보자.
$ find . -print
find 명령의 특징은 별도의 옵션 없이 서브 디렉토리까지 검색한다.
그리고 -print 옵션은 액션이라는 개념으로 검색 결과를 표준 출력으로 출력하는 역할을 한다.
이 액션을 사용하지 않으면 암묵적으로 사용된다.
자주 사용되는 검색 옵션
- -name pattern: 패턴과 일치하는 파일과 디렉토리 검색
- -iname pattern: 위와 동일하지만 대소문자 구분하지 않음
- -size n: n 크기의 파일을 검색
- -type x: x 형식의 파일을 검색 (d=directory, f=file)
- -empty: 빈 파일이나 디렉토리 검색
자주 사용되는 검색 옵션 예제
$ find . -name '*.txt.' # .txt로 끝나는 파일과 디렉토리 검색
$ find . -name 'log*' -type f # log로 시작되는 파일 검색
$ find . -name 'log*' -type d # log로 시작되는 디렉토리 검색
연산자
- -a, -and
- -o, or
- -!, -not
- (): 조건과 연산자를 조합한 표현식을 하나로 묶어 처리할 때 사용
연산자 사용 예제
$ find . -name '*.c' -o -name '*.cpp' # 이렇게 검색하면 디렉토리까지 검색됨
$ find . \( -name '*.c' -o -name '*.cpp' \) -type f # 파일만 검색
액션
find 명령의 결과를 어떻게 처리할 것인가에 대한 행위를 의미한다.
- -ls: 검색 결과를 'ls -dils'의 형식으로 표준 출력
- -delete: 검색된 파일 삭제
- -quit: 검색 조건에 해당하는 결과가 하나라도 나올 경우 검색 종료
- -exec command: 검색 결과에 대해 지정된 명령 실행
- -ok command: 위의 액션과 동일하고 다른 점은 검색 결과에 대해 확인
- -prune: 특정 디렉토리에 대해 검색 제외
액션 사용 예제
# 현재 디렉토리에서 .git과 log 디렉토리는 제외하고 '.c'로 끝나는 일반 파일에 대한 검색 수행
$ find . -name .git -prune -o -name log -prune -o -type f -name '*.c' -print
# 중괄호는 find 명령에 의해 검색된 파일의 이름으로 치환됨, 세미콜론은 명령의 끝을 알림
# 목적 파일만 삭제하는 예제
$ find . -name '*.o' -type f -exec rm -rf \{} \;
옵션
- -depth: 디렉토리 접근 시 디렉토리 안의 파일에 대하여 우선 처리. -delete 옵션에 자동 적용됨
- -maxdepth level: 디렉토리 최대 탐색 깊이
- -mindepth level: 디렉토리 최소 탐색 깊이
- -mount: 다른 파일시스템에 마운트된 디렉토리 탐색은 제외
옵션 사용 예제
maxdepth 옵션은 겁색 옵션과 액션 전에 사용되어야 함
# 현재 디렉토리만 검색하는 예제
$ find . -maxdepth 1 -name '*.c'
반응형
'DevOps > Linux' 카테고리의 다른 글
리눅스 awk 명령어 - 1 (0) | 2021.06.19 |
---|---|
리눅스 sed 명령어 (0) | 2021.06.12 |
리눅스 - 네임서버 개념, 작동 방식 (0) | 2021.05.30 |
리눅스 - 디스크 명령어 du, df (0) | 2021.05.09 |
프록시 서버 설정, 리눅스 스퀴드(squid) (0) | 2021.05.02 |