youngfromnowhere

[Linux Shell] 하위디렉토리까지 패턴으로 파일을 찾아내서 모두 삭제하기 본문

Linux Shell

[Linux Shell] 하위디렉토리까지 패턴으로 파일을 찾아내서 모두 삭제하기

곽일땡 2022. 12. 6. 22:47

java 컴파일 결과 생성되는 class 파일들을 한번에 모두 지우고 싶을 때,

 

$ rm ./*.class

rm 명령으로는 현재 디렉토리에 있는 파일들만 지워진다.

 

하위 디렉토리를 청소하고 싶을때는 find 명령을 쓰면 된다고 한다.

$ find . -name *.class -type f -delte

 

그런데,

첫번째 적용할 때는 현재 디렉토리의 파일만 삭제되고

두번째 적용시에야 하위 디렉토리의 *.class 파일이 모두 삭제되었다.

 

왜 그럴까?

 

일단 테스트를 위해 위와 같은 directory structure를 만들었다.

 

Test/에서 현재 directory를 대상으로 find 명령을 실행하니, 하위 디렉토리를 탐색하지 않는 것을 볼 수 있다.

그렇기 때문에 -delete 옵션까지 붙였을 때도 현재 directory의 파일만 삭제한 것이다.

 

어떻게 해야 한번에 Test/와 그 하위 디렉토리 내부의 *.class 파일들을 한번에 모두 탐색하고 삭제할 수 있을까?

상위 디렉토리에서, find 명령에 인자로 탐색하고자 하는 Test/ 디렉토리를 주면 된다. Test/와 그 하위 디렉토리까지 탐색한 것을 볼 수 있다.

 

$ find ./Test -name *.class -delete

이제 액션으로 -delete를 주면 한번에 Test/와 그 하위 디렉토리의 모든 *.class 파일들이 삭제된다.