시스템내의 특정파일들을 검색하여 자동 삭제하는 방법
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 2,548 조회
- 0 추천
- 목록
본문
시스템내의 특정파일들을 검색하여 자동 삭제하는 방법
find로 찾은 파일에 특정명령어를 수행할 수 있다고 앞서 말씀 드린 바가 있습니다.
아래의 예는 bible이라는 계정사용자의 홈디렉토리내에 존재하는 *.bak파일을 찾아서 모두 삭제한 예입니다.
이 예는 디스크공간 부족 시에 백업파일을 삭제하고자 할 때에 사용하는 방법입니다.
하지만 백업파일의 형태가 *.bak가 아닌 경우가 있으므로 실무에 적용하실 경우에는 지정하는 파일형식에 주의하시기 바랍니다.
먼저 “find ~bible
-name *.bak -exec ls –l {} \;”로 bible사용자의 홈디렉토리에
존재하는 *.bak파일을 찾아 보았습니다.
결과 모두 2개의 파일이 존재함을 확인 하였습니다.
확인한 다음 “find ~bible -name *.bak -exec rm -f {} \;”명령어로 bible사용자의 홈디렉토리내에 존재하는 *.bak파일을 모두 삭제하였습니다.
[root@su250 ~]# find ~bible -name *.bak -exec ls -l {} \; -rw-r--r-- 1 root root 0 2008-12-23 01:28 /home/bible/original.bak -rw-r--r-- 1 root root 0 2008-12-23 01:28 /home/bible/gowent.bak [root@su250 ~]# [root@su250 ~]# [root@su250 ~]# find ~bible -name *.bak -exec rm -f {} \; [root@su250 ~]# [root@su250 ~]# find ~bible -name *.bak -exec ls -l {} \; [root@su250 ~]# |
여기서 “-exec rm -f
{}”에서 -exec는 찾아진 파일들을 모두 뒤에 나오는 명령어(rm -f {})로 실행한다는 의미이며 {}는 검색된 2개의 파일들이 하나씩 차례대로 치환됨을 의미합니다.
즉, 위의 “-exec rm -f {}”는 아래와 같이 2개의 명령어가 차례대로 실행된 것입니다.
rm -f /home/bible/original.bak
rm -f /home/bible/gowent.bak
만약 찾아진 파일개수가 100개였다면
위의 명령어가 100번 실행되었을 것입니다.
다시 한번 말씀 드린다면 여기서 중요한 것은 -exec는 찾은 파일들을 대상으로 뒤에 나오는 명령어를 실행하라는 의미이며 {}는 찾아진 파일들을 하나씩 대입됨을 의미합니다.
따라서 검색된 파일의 개수만큼 -exec뒤의 명령어가 실행됩니다.
find명령어의 꽃이 -exec의 사용에 있으며 이것을 사용하지 못한다면 find로는 파일찾기기능 이외의 사용은 하지 못함을 의미합니다.
관련자료
-
이전
-
다음