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 {} \;
ex) 특정날짜 이후 수정파일 찾아서 복사
find -type f -newermt '2022-04-03' | xargs cp -ta /tmp/log/test_bak/
find . -name [FILE] > [SAVE_FILE]
'리눅스' 카테고리의 다른 글
grep 으로 중복제거 검색 (0) | 2020.08.31 |
---|---|
rsync 명령어로 파일복사 (0) | 2020.08.14 |
우분투 해외ip ssh차단 (0) | 2020.03.10 |
tcpflow 사용법 (0) | 2020.01.02 |
외부에서 root계정 사용하기(ssh이용하여 root계정연결) (0) | 2019.12.04 |