비어 있지 않은 작은 폴더를 찾는 방법은 무엇입니까?

비어 있지 않은 작은 폴더를 찾는 방법은 무엇입니까?

거의 비어 있는 모든 음악 폴더를 찾아서(나중에 삭제) 싶습니다(Banshee는 음악 파일만 삭제하고 거기에 있는 다른 파일은 삭제하지 않음).

나는 다음을 시도했다:

find -type d -size -500k \;

하지만 더 큰 파일이 포함된 폴더도 표시됩니다.

find -type d -size -500k -exec du {} \;

정확한 사이즈를 보여줍니다.

N보다 작은 폴더만 표시하도록 find cmd를 수정하는 방법은 무엇입니까?

답변1

이것을 다른 스크립트로 직접 파이프할 필요가 없는 한 제가 사용하는 명령 중 하나는 다음과 같습니다.

뒤 . | 정렬 -rn

이렇게 하면 가장 작은 폴더가 크기와 함께 인쇄된 목록의 맨 아래에 배치됩니다. 더 큰 것을 필터링하려면 조금 더 많은 작업이 필요합니다.

답변2

N 바이트 미만이 포함된 폴더를 삭제하려는 경우 다음 하나의 라이너가 작동합니다.

du | awk '$1 <= 500 { print "rm -rf \"" substr($0, length($1)+2) "\""}' | sh

이것은 무엇을 합니까? 연속적으로:

  • du경로와 함께 디렉토리 크기를 인쇄합니다.
  • $1 <= 500첫 번째 열이 500 미만인지(500바이트보다 작은 경우) 테스트하는 조건입니다.
  • print이상한 인쇄물로rm -rf "/path/to/small/dir"
  • | sh실행할 수 있도록 sh에 파이프합니다.

sh에 파이프하는 대신 xargs를 사용하여 수행할 수도 있지만 저는 이 방식에 익숙합니다.

관련 정보