대충이라도 하자

리눅스 터미널 해당 경로 제외하고 삭제(+find에 여러 개 조건) 본문

꼬꼬마 개발자 노트/Linux

리눅스 터미널 해당 경로 제외하고 삭제(+find에 여러 개 조건)

Sueeeeee
반응형

1. 경로 제외하고 삭제하기

백업 폴더 안에 removable 폴더와 unremovable 폴더 두 개를 넣어놓았다.

그러고 나서 unremovable폴더는 제외하고 모두 삭제 하려고 한다.

find /home/backup/* ! -path "/home/backup/unremovable" | sort |xargs rm -r

만약에 다른 폴더 안에 폴더나 파일이 있다면, rm -r에 f를 추가시켜야 한다. 아래와 같이!

find /home/backup/* ! -path "/home/backup/unremovable" | sort |xargs rm -rf

1) rm-rf 해도 폴더는 삭제되긴 하는데 오류 경고가 뜨긴 한다.

2) ! -path "삭제하면 안되는 파일 경로"

: 물음표 뒤에 띄어쓰기 해야함

3) find /home/backup/ 뒤에 * 안해주니까 backup 파일 자체가 삭제된다..

결과는 아래처럼 removable은 삭제!

 

2. 여러 가지 조건 추가하기

find /home/backup -type f -mtime +30 -name "*.tgz" ! -path "/home/backup/unremovable/*"|sort|xargs rm -f

1) 첫번째 조건 -mtime +30

: 만들어진 지 30일이 지난 파일이나 폴더(-mtime 뒤에 꼭 띄어쓰기하고 +한 후에 띄어쓰기 없이 날짜 적어주기)

2) 두번째 조건 -name "*.tgz"

: 파일의 확장자가 tgz인 파일

3) 세 번재 조건 ! -path "/home/backup/unremovable*"

: path 뒤의 경로는 제외

=> 위 세 조건에 해당하는 파일을 지우게 된다.

아마 이런 식으로 find 뒤에 계속 조건이 추가 가능할 듯하다.

반응형
Comments