somoly.tistory.com

find 명령어는 아시다시피 파일을 검색하기 위한 명령어 입니다.

그리고 rm 명령어는 디렉토리와 파일 삭제를 위한 명령어 죠.

이 두개를 이용하여 불필요한 파일을 일괄적으로 삭제 하는 방법에 대해 알아 보겠습니다.

/home/windpyj 경로에 a b c 의 디렉토리를 만들었습니다.

windpyj@ubuntu:~$ ls -l
total 12
drwxr-xr-x 2 windpyj windpyj 4096 2007-05-17 19:45 a
drwxr-xr-x 2 windpyj windpyj 4096 2007-05-17 19:45 b
drwxr-xr-x 2 windpyj windpyj 4096 2007-05-17 19:46 c

a b c 각각의 디렉토리 안의 파일을 다음과 같이 1~9.aaaa 란 파일을 넣어 두었습니다.

windpyj@ubuntu:~$ ls -l a b c
a:
total 0
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:48 1.aaaa
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:48 2.aaaa
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:48 3.aaaa
b:
total 0
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:48 4.aaaa
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:48 5.aaaa
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:48 6.aaaa
c:
total 0
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:49 7.aaaa
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:49 8.aaaa
-rw-r--r-- 1 windpyj windpyj 0 2007-05-17 19:49 9.aaaa

현재 경로를 확인해 보았습니다.

windpyj@ubuntu:~$ pwd
/home/windpyj

find 명령어로 확장자가 aaaa 인 파일을 /home/windpyj 내의 디렉토리에서 검색을 했습니다.

windpyj@ubuntu:~$ find /home/windpyj -name *.aaaa
/home/windpyj/a/1.aaaa
/home/windpyj/a/2.aaaa
/home/windpyj/a/3.aaaa
/home/windpyj/b/4.aaaa
/home/windpyj/b/5.aaaa
/home/windpyj/b/6.aaaa
/home/windpyj/c/7.aaaa
/home/windpyj/c/8.aaaa
/home/windpyj/c/9.aaaa

이제 /home/windpyj 내의 디렉토리 a b c에 있는 확장자가 aaaa인 파일을 삭제하여 보겠습니다.
find명령어는 검색을 하고 -exec 옵션을 통해 뒤에 오는 rm 명령어가 함께 실행이 됩니다.
그래서 일괄적으로 검색된 파일을 한번에 삭제가 가능합니다.


windpyj@ubuntu:~$ find /home/windpyj -name *.aaaa -exec rm -f {} \;

삭제 후 a b c 디렉토리를 살펴보니 아무것도 없네요...

windpyj@ubuntu:~$ ls -l a b c
a:
total 0
b:
total 0
c:
total 0


주의] 모든 로그파일인 *.log 파일을 삭제한다고
$ find / -name *.log -exec rm -f {} \;
위와 같이 명령어를 실행하면 모든 로그파일이 전부 삭제되오니 가급적 / 를 사용하지 않도록 주의해야 합니다.
profile

somoly.tistory.com

@RxCats

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!