find 명령어 기본 구조
find [경로] [옵션] [조건] [액션]
- 경로: 검색을 시작할 디렉토리 경로. 예를 들어
/home/user
. - 옵션: 검색 방식을 조정하는 옵션들.
-type
: 파일의 유형을 지정한다. 예:f
(파일),d
(디렉토리),l
(심볼릭 링크) 등.-name
: 파일 이름을 기준으로 검색한다. 와일드카드(*
,?
)를 사용할 수 있다.-user
: 특정 사용자가 소유한 파일을 검색한다.-newer
: 지정한 파일보다 최근에 수정된 파일을 검색한다.-perm
: 특정 권한을 가진 파일을 검색한다.-size
: 파일 크기를 기준으로 검색한다. 예:+100M
(100MB 이상),-50k
(50KB 이하) 등.-mtime
: 파일의 마지막 수정 시간을 기준으로 검색한다. 예:+30
(30일 이상),-7
(7일 이내) 등.-iname
: 대소문자를 구분하지 않고 파일 이름을 검색한다.-regex
: 정규 표현식을 사용하여 파일을 검색한다.
- 조건: 파일의 속성이나 이름 등을 기준으로 설정. 예: 파일 이름, 크기, 수정 시간 등.
- 액션: 검색된 파일에 대해 수행할 작업.
-print
: 검색된 파일의 경로를 출력한다. 기본 액션.-exec
: 검색된 파일에 대해 지정한 명령어를 실행한다.-delete
: 검색된 파일을 삭제한다.-ls
: 검색된 파일의 상세 정보를 출력한다.-ok
:-exec
와 유사하지만, 각 명령어 실행 전에 사용자에게 확인을 요청한다.
기본 파일 찾기 예제
특정 이름의 파일 찾기:/home/user
디렉토리 내에서 filename.txt
라는 이름의 파일을 검색한다.
find /home/user -name "filename.txt"
특정 확장자의 파일 찾기:/var/log
디렉토리 내에서 .log
확장자를 가진 모든 파일을 검색한다.
find /var/log -type f -name "*.log"
크기가 특정 값 이상인 파일 찾기:/home/user
디렉토리 내에서 크기가 100MB 이상인 파일을 검색한다.
find /home/user -type f -size +100M
수정된 지 일정 기간이 지난 파일 찾기:/tmp
디렉토리 내에서 마지막 수정 시간이 30일 이상 지난 파일을 검색한다.
find /tmp -type f -mtime +30
특정 사용자 소유의 파일 찾기:/var/www
디렉토리 내에서 www-data
사용자가 소유한 파일을 검색한다.
find /var/www -type f -user www-data
특정 권한을 가진 파일 찾기:/etc
디렉토리 내에서 권한이 644
인 파일을 검색한다.
find /etc -type f -perm 644
find 명령어 활용 예제
검색된 파일 목록 출력:/etc
디렉토리 내에서 .conf
파일을 찾아 출력한다.
find /etc -type f -name "*.conf" -print
검색된 파일 삭제하기:/tmp
디렉토리 내에서 .tmp
파일을 찾아 삭제한다.
find /tmp -type f -name "*.tmp" -exec rm {} \;
검색된 파일의 소유자 변경하기:/var/www
디렉토리 내에서 .html
파일의 소유자를 www-data
로 변경한다.
find /var/www -type f -name "*.html" -exec chown www-data:www-data {} \;
검색된 파일의 권한 변경하기:/home/user
디렉토리 내에서 .sh
파일의 권한을 755
로 변경한다.
find /home/user -type f -name "*.sh" -exec chmod 755 {} \;
최근에 수정된 파일을 다른 디렉토리로 복사하기:/var/log
디렉토리 내에서 지난 7일간 수정된 .log
파일을 /backup/logs
로 복사한다.
find /var/log -type f -name "*.log" -mtime -7 -exec cp {} /backup/logs/ \;
정규 표현식을 사용한 파일 검색:/usr/local
디렉토리 내에서 숫자로 시작하는 파일 이름을 가진 파일을 검색한다.
find /usr/local -type f -regex ".*/[0-9].*"
확장자를 대소문자 구분 없이 검색하기:/var/www
디렉토리 내에서 .HTML
또는 .html
확장자를 가진 파일을 검색한다.
find /var/www -type f -iname "*.html"
디렉토리 검색하기:/home/user
디렉토리 내에서 이름에 backup
이 포함된 디렉토리를 검색한다.
find /home/user -type d -name "*backup*"
심볼릭 링크 검색하기:/usr
디렉토리 내에서 심볼릭 링크인 파일을 검색한다.
find /usr -type l
여러 조건을 조합하여 검색하기:/var
디렉토리 내에서 .log
확장자를 가진 파일 중 크기가 10MB 이상이고, root
사용자가 소유한 파일을 검색한다.
find /var -type f -name "*.log" -size +10M -user root
검색된 파일의 상세 정보 출력하기:/etc
디렉토리 내에서 .conf
파일을 찾아 상세 정보를 출력한다.
find /etc -type f -name "*.conf" -ls
명령어 실행 전에 사용자 확인 요청하기:/tmp
디렉토리 내에서 .tmp
파일을 찾아 삭제하기 전에 확인을 요청한다.
find /tmp -type f -name "*.tmp" -ok rm {} \;
하위 디렉토리를 제외하고 검색하기:/home/user
디렉토리 내에서 최상위 디렉토리만 검색하고 하위 디렉토리는 제외한다.
find /home/user -maxdepth 1 -type f
특정 그룹 소유의 파일 찾기:/var/www
디렉토리 내에서 www-data
그룹이 소유한 파일을 검색한다.
find /var/www -type f -group www-data
빈 파일 검색하기:/var/log
디렉토리 내에서 크기가 0인 빈 파일을 검색한다.
find /var/log -type f -empty
심볼릭 링크를 따라 검색하기:/usr
디렉토리 내에서 심볼릭 링크를 따라 실제 파일을 검색한다.
find /usr -L -type f
파일의 접근 시간을 기준으로 검색하기:/home/user
디렉토리 내에서 지난 15일간 접근하지 않은 파일을 검색한다.
find /home/user -type f -atime +15
디렉토리 생성 시간을 기준으로 검색하기:/var
디렉토리 내에서 최근에 생성된 디렉토리를 검색한다.
find /var -type d -ctime -7
파일 이름에 특정 문자열이 포함된 파일 검색하기:/home/user
디렉토리 내에서 파일 이름에 report
가 포함된 파일을 검색한다.
find /home/user -type f -name "*report*"
파일의 크기를 바이트 단위로 검색하기:/home/user
디렉토리 내에서 크기가 정확히 2048바이트인 파일을 검색한다.
find /home/user -type f -size 2048c
심볼릭 링크를 제외하고 검색하기:/usr/local
디렉토리 내에서 심볼릭 링크가 아닌 실제 파일만 검색한다.
find /usr/local -type f ! -type l
여러 액션을 한 번에 수행하기:/var/log
디렉토리 내에서 .log
파일을 찾아 삭제하고, 삭제된 파일의 이름을 로그 파일에 기록한다.
find /var/log -type f -name "*.log" -exec rm {} \; -exec echo "Deleted: {}" >> deleted_logs.txt \;
추가 팁 및 활용 방법
-prune
옵션을 사용하여 특정 디렉토리 제외하기:
특정 디렉토리를 검색에서 제외하고 싶을 때 사용한다. 예를 들어, /home/user
디렉토리 내에서 node_modules
디렉토리를 제외하고 검색한다.
find /home/user -path "/home/user/node_modules" -prune -o -type f -name "*.js" -print
xargs
와 함께 사용하여 성능 향상하기:
많은 파일에 대해 명령어를 실행할 때 xargs
와 함께 사용하면 성능을 향상시킬 수 있다.
find /var/log -type f -name "*.log" | xargs grep "ERROR"
병렬로 명령어 실행하기:
GNU find
와 xargs
의 -P
옵션을 사용하여 병렬로 명령어를 실행할 수 있다.
find /var/log -type f -name "*.log" | xargs -P 4 -I {} grep "ERROR" {}
환경 변수와 함께 사용하기:
검색된 파일의 경로를 환경 변수에 저장하여 후속 작업에 사용할 수 있다.
FILES=$(find /home/user -type f -name "*.txt") echo "$FILES"
특정 시간 범위 내에서 파일 검색하기:
파일의 수정 시간이 특정 범위 내에 있는 파일을 검색할 수 있다. 예를 들어, 지난 7일에서 30일 사이에 수정된 파일을 검색한다.
find /home/user -type f -mtime +7 -mtime -30
다양한 조건 결합하기:-and
, -or
등의 논리 연산자를 사용하여 복잡한 조건을 결합할 수 있다.
find /var/www \( -name "*.html" -or -name "*.css" \) -type f
파일 시스템 유형 지정하기:
특정 파일 시스템 유형의 파일만 검색할 수 있다. 예를 들어, ext4
파일 시스템의 파일을 검색한다.
find / -xdev -type f
심볼릭 링크의 대상 파일 검색하기:
심볼릭 링크가 가리키는 대상 파일을 검색할 수 있다.
find /usr/local -type l -exec ls -l {} \;
파일의 변경 권한을 기준으로 검색하기:
파일의 권한이 특정 값보다 높은 파일을 검색할 수 있다.
find /home/user -type f -perm /u+x
'CS > Linux' 카테고리의 다른 글
[Linux] 주요 네트워크 명령어 및 설정 파일 (0) | 2024.09.27 |
---|---|
[Linux] CRON과 AT (0) | 2024.09.22 |
[Linux] 파일의 압축과 묶기 (1) | 2024.09.22 |
[Linux] 패키지 관리자 (1) | 2024.09.22 |
[Linux] 하드 링크와 심볼릭 링크 (1) | 2024.09.20 |