Linux find 명령 - 크기별로 디렉토리를 찾는 방법은 무엇입니까?

Linux find 명령 - 크기별로 디렉토리를 찾는 방법은 무엇입니까?

find디렉터리 크기에 따라 결과가 반환될 수 있나요 ?
아래 명령은 예상대로 잘 작동합니다.

find * -type f -size +10M -exec ls -hlSr {} \+

그러나 동일한 콘텐츠를 디렉터리에 적용하면 결과가 반환되지 않습니다.

find * -type d -size +10M -exec ls -hlSr {} \+   //no output

위의 일부 변경이 가능한지 궁금합니다.

du원하는 출력을 얻기 위해 -->를 이와 같이 사용할 수 있다는 것을 알고 있지만 제한 사항과 사용 시나리오를 du -hs * | sort -h이해하는 데 더 관심이 있습니다 .find

답변1

이것은 예상됩니다.

find -size디렉토리 내용은 확인되지 않고 inode 크기만 확인됩니다(디렉터리 역시 "파일"일 뿐이라는 점을 기억하십시오). 디렉터리의 경우 10M보다 클 수 없으므로 결과 find는 비어 있습니다.

inode 크기는 다음을 실행할 때 얻는 크기와 동일합니다 stat.

$ du -s dir
61943836851 dir

$ stat -c %s dir
53248

그래서 단독으로는 사용이 불가능합니다 find.
물론 필터링 옵션을 find . -type d -exec du -hs {} +사용할 수도 있습니다.find


추가 자료:

관련 정보