어제 find 명령어를 가지고 여러가지 조건을 바탕으로 원하는 결과를 출력하는 방법에 대해 알아보았다.
( find 명령어에 대한 자세한 사용법은 여기 를 클릭하여 확인 가능하다 )
오늘은 find 명령어의 활용에 대해 정리해 보려 한다.
검색결과물들을 지우고 싶을 때가 있거나 또는 다른 디렉토리로 복사하여 모아둔다던지 하는 행위들이 필요할 수 있다.
예컨대, 디스크 파티션이 거의 Full 직전이어서 불필요한 파일을 찾아 지우고 싶은 경우.. 또는 PPT나 HWP 와 같은 문서 파일들만 모아서 다른 디렉토리로 이동시켜 보관하려는 경우가 해당된다 하겠다.
find 명령어를 이용해서 검색은 하겠다만.. 검색 결과의 파일들을 일일히 개별적으로 처리해야 한다면 불편함이야 말할 수 없을 것이다.
하지만 고맙게도 find 명령어에서 옵션으로 제공하는 "-exec" 를 이용하면 이러한 2차 작업을 손쉽고 간단히 처리할 수 있다.
먼저 -exec 옵션의 사용은 다음과 같이 한다.
사용법: find [디렉토리] [검색옵션] -exec [2차 수행 명령] {} \;
-exec 뒤에 붙는 것들을 간단히 설명하면..
우선 2차 수행 명령.. rm 이나 cp, mv 와 같은 리눅스 명령어이다.
두번째 '{}' 는 검색 결과의 파일리스트들을 대입하기 위한 옵션이다.
세번째는 명령어를 실행하라는 Do it 과 같은 명령으로 이해하면 좋다.
다음의 예를 놓고 설명을 하면..
예 : find / -name '*.txt" -exec rm -f {} \;
- find 명령어로 txt 확장자를 가진 파일을 검색한다.
- 검색결과로 파일들이 도출될때마다 -exec 다음 명령어를 실행한다.
rm -f [검색결과 파일]
a.txt b.txt ~~~ 와 같이 10개의 파일이 검색되었다고 하면..
rm -f a.txt
rm -f b.txt
rm -f c.txt
.
.
.
이런식으로 검색결과가 끝날때까지 -exec 뒤의 명령어가 수행되어지는 것이다.
백문이 불여일견 이라고.. 직접 테스트를 해보자.
자! 우선 다음과 같은 파일들을 준비했다.
- 10개의 PDF 문서 파일
- 1개의 동영상 파일 (500M 이상)
위 예로 든 상황 2개를 테스트 해 볼 것이다.
상황#1 PDF 문서파일을 모두 검색하여 Doc 디렉토리로 이동 시키기
명령어 : find . -name '*.pdf'
위와 같이 10개의 PDF 문서가 정상적으로 검색되었다.
이제 이 파일들을 Doc 디렉토리로 이동시킨다.
명령어 : find . -name '*.pdf' -exec mv {} ./Doc \;
위 명령어에서 -exec 옵션 뒤 구문을 좀 살펴보자.
구문 : -exec mv {} ./Doc \;
검색된 결과가 1.pdf ~ 10.pdf 까지 총 10개이니까 검색결과를 기반으로 해석해 보면..
mv 1.pdf ./Doc
mv 2.pdf ./Doc
.
.
.
mv 10.pdf ./Doc
와 같이 명령어가 수행될것이라고 생각해 볼 수 있다.
그럼 결과는..
의도한 바와 같이 잘 처리되었음을 확인할 수 있다.
상황#2 500M 이상되는 AVI 영상 파일을 찾아 삭제하기
상황#1 과 마찬가지로.. 먼저 파일용량이 500M 이상되는 파일을 검색해 본다.
명령어 : find . -size 500M -name '*.avi'
500M 이상의 avi 파일이 잘 검색되었다.
이제 검색된 파일을 지워보자.
명령어 : find . -size 500M -name '*.avi' -exec rm -f {} \;
-exec 뒷부분을 좀 살펴보면..
test.avi 파일 하나가 검색되었으니.. {} 부분에 test.avi 를 대입한다. 그러면 아래와 같이...
rm -f test.avi 의 명령어가 같이 수행되어 파일삭제가 이루어진다.
결과를 보면..
정상적으로 test.avi 파일이 삭제 되었음을 확인할 수 있다.
이렇듯.. -exec 옵션을 이용하면 검색 결과를 기반으로 다양한 2차 작업을 간단하게 수행할 수 있다.
역시나 리눅스에서 무료로 제공하는 find 명령어가 얼마나 강력한지를 여실없이 보여주는 시간이었다.
끝~
블로그 관리자가 댓글을 삭제했습니다.
답글삭제