[LINUX] FIND 로 파일,폴더 찾기 지우기

2021. 11. 26. 12:28 OS/Linux

find 명령어

find [OPTION...] [PATH] [EXPRESSION...]

 

OPTION

    -P : 심볼릭 링크를 따라가지 않고, 심볼릭 링크 자체 정보 사용.

    -L : 심볼릭 링크에 연결된 파일 정보 사용.

    -H : 심볼릭 링크를 따라가지 않으나, Command Line Argument를 처리할 땐 예외.

    -D : 디버그 메시지 출력.

 

EXPRESSION

    -name : 지정된 문자열 패턴에 해당하는 파일 검색.

    -empty : 빈 디렉토리 또는 크기가 0인 파일 검색.

    -delete : 검색된 파일 또는 디렉토리 삭제.

    -exec : 검색된 파일에 대해 지정된 명령 실행. -path : 지정된 문자열 패턴에 해당하는 경로에서 검색.

    -print : 검색 결과를 출력. 검색 항목은 newline으로 구분. (기본 값)

    -print0 : 검색 결과를 출력. 검색 항목은 null로 구분.

    -size : 파일 크기를 사용하여 파일 검색.

    -type : 지정된 파일 타입에 해당하는 파일 검색.

    -mindepth : 검색을 시작할 하위 디렉토리 최소 깊이 지정.

    -maxdepth : 검색할 하위 디렉토리의 최대 깊이 지정.

    -atime : 파일 접근(access) 시각을 기준으로 파일 검색.

    -ctime : 파일 내용 및 속성 변경(change) 시각을 기준으로 파일 검색.

    -mtime : 파일의 데이터 수정(modify) 시각을 기준으로 파일 검색.

 

 

 

find PATH [-options] -exec rm {} \;

 

PATH: 검색을 수행할 디렉토리 (해당 디렉토리를 포함한 하위 디렉토리가 검색 대상이 됩니다)

-exec 명령어는 맨 뒤에 ; 까지 argument 로 취하기 때문에 escape 시켜서 넣어주는 것입니다.

 

find . -type f -exec rm {} \;

 

위 명령어의 의미는 지정된 현재디렉토리(.) 기준으로 모든 파일(디렉토리 제외)들을 삭제하는 명령어

원하는 경로를 설정하면 해당 경로 하위의 모든 디렉토리가 대상이 됨.

root path (/) 를 지정하지 않도록 조심.

실제 사용할 때는 아래 예제와 같이 -name, -mtime 등의 옵션으로 특정 조건을 만족하는 파일들을 지울 때 사용하면 유용하게 사용할 수 있습니다.

 

 

자주쓰는 표현

 

ex) 현재 디렉토리 하위에서 확장자가 "txt" 인 파일 모두 삭제

find . -type f -name "*.txt" -exec rm {} \;

 

ex) 현재 디렉토리 하위에서 확장자가 "test"로 시작하는 모든 파일 삭제

find . -type f -name "test*" -exec rm {} \;

 

ex) 현재 디렉토리 하위에서 크기가 500 kbyte 이상인 파일만 출력

find . -size +500k -type f -exec rm {} \;

 

ex) 검색 결과를 파일로 저장. (find, redirection)

find . -name [filename] > [save_filename]

 

ex) 빈 디렉토리 또는 크기가 0인 파일 검색

find . -empty

 

ex) 하위 디렉토리 검색하지 않기

find . -maxdepth 1 -name []

 

ex) 현재 디렉토리 하위에서 생성된지 30일 이상 된 파일만 삭제

find . -ctime +30 -type f -exec rm {} \;

 

ex) 현재 디렉토리 하위에서 확장자가 "test"로 시작하는 모든 파일 삭제

find . -type f -name "test*" -exec rm {} \;