youngfromnowhere
[Linux Shell] 하위디렉토리까지 패턴으로 파일을 찾아내서 모두 삭제하기 본문
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 파일들이 삭제된다.
'Linux Shell' 카테고리의 다른 글
[Linux Shell] pyenv 설정하면서 마주친 shell script 분석 (0) | 2023.09.22 |
---|---|
[Linux Shell] 내가 Terminal에서 코딩하기를 고집하는 이유 (1) | 2022.11.30 |
[Linux Shell]WSL에서 작업하다가 윈도우로 옮기기 (0) | 2022.11.09 |
[Linux Shell]Bash Shell의 file descriptor. (1) | 2022.10.31 |