기본 콘텐츠로 건너뛰기

[MacOS] 특정 경로 밑의 디렉터리 일괄 삭제하기

How to remove directories from Mac

Mac의 임시 파일들을 삭제하는 방법을 게시했던 ._xxx, .DS_Store 등 숨김파일 정리 및 .gitignore 처리하기 에서 언급했던 방식을 응용해서 Node 기반의 개발에서 사용했던 node_modules 디렉터리를 일괄 삭제하는 방법을 정리해 본다.

개발하면서 참조한 소스들, 개발한 소스들이 많기 때문에 특정 경로 이하의 모든 node_modules 들을 찾아서 삭제하는 것보다는 일괄적으로 삭제하기 위해서 find 명령을 사용하면 된다.

$ find . -name "node_modules" -type d -prune -print -exec rm -rf '{}' +
  • find .: 현재 경로를 루트 경로로 설정하고 검색
  • -name "node_modules": "node_modules"라는 이름을 지정
  • -type d: 지정한 이름의 디렉터리만 찾도록 지정
  • -prune: "node_modules"가 발견되면 그 경로 하위로 내려가지 않도록 지정
  • -print: 검색된 대상의 경로 출력하도록 지정
  • -exec rm -rf '{}' +: 일치된 결과에 대한 삭제 처리를 수행하는데, {} + 는 마지막에 선택한 이름을 추가해서 명령줄을 빌드하도록 하는 것으로 전체 발견된 "node_modules"의 수보다 적은 횟수로 호출할 수 있도록 조정하는 것으로 성능 향상을 위한 것이다.

무조건 실행되면 다시 복구할 수 없는 상태가 되므로 아래의 명령으로 실제 대상들이 제대로 검색되는지를 먼저 확인하고 진행하도록 한다.

$ find . -name "node_modules" -type d -prune -print | xargs du -chs
254M    ./K3Lab/RNDWorks/apigw/samples/etri/web/node_modules
4.0K    ./Blogs/hugo/hugoblog/node_modules
...
 14G    total
  • xargs: 앞의 명령에 대한 출력을 다음 명령의 입력으로 사용할 수 있도록 지정
  • du: "Disk Usage"를 나타내는 명령으로 디렉터리의 디스크 사용량 출력
  • -chs: 대상 디렉터리의 사용량 출력과 전체 총 합계 사용량을 보기 쉬운 단위 (KB, MB, GB) 로 표시하도록 지정

상기와 같이 검색된 "node_modules"의 개별 사용량과 최종 전체 사용량을 확인할 수 있다. 결과에 별다른 문제가 없다면 삭제 명령을 진행하면 된다.

댓글