목록에 있는 파일은 얼마나 많은 디스크 공간을 사용합니까?

목록에 있는 파일은 얼마나 많은 디스크 공간을 사용합니까?

목록에 있는 파일이 사용하는 디스크 공간을 확인하는 방법은 무엇입니까? 변형을 찾고 있어요

du -s *.sql

총계만 보고 싶습니다. 위 명령은 항상 각 파일에 대해 한 줄을 표시합니다.

답변1

du -c합계를 얻은 다음 tail마지막 행(합계)만 가져오도록 파이프하는 경우 :

du -c -- *.sql | tail -n 1

du제가 직접 신고 하게 할 방법은 없을 것 같습니다오직세트에 포함된 총 파일 수입니다.

이는 --필수는 아니지만 스크립트에서 이 명령을 사용하려는 경우 적극 권장됩니다. 옵션의 끝을 표시하고 재미있는 파일 이름을 방지합니다. 자세한 내용은 여기를 참조하세요."--"(이중 대시)은(는) 무슨 뜻인가요?


몇 가지 기술적 사항:

"숨겨진" 파일 *.sql(점으로 시작하는 파일 이름)은 포함되지 않습니다. 이는 glob이 기본적으로 숨겨진 파일을 포함하지 않기 때문입니다.

이 목적을 위해 *.sql디렉토리에는 다음 du이 포함됩니다.모두이러한 디렉터리의 파일에 재귀적으로 액세스합니다.

zsh를 사용하면 제외 디렉토리를 작성할 수 있습니다 *.sql(^/). 또는 *.sql(D)숨겨진 파일이 포함되어 있습니다. 자세한 내용은 zsh glob 한정자를 찾아보세요.

이를 위해 *.sql심볼릭 링크는 du링크가 가리키는 대상의 크기가 아닌 링크 자체의 크기를 계산합니다. du -H링크 대상의 크기를 가져오는 데 사용됩니다 .

duGNU를 포함한 대부분의 구현 에서는 어떤 경우에도 du고유한 파일에 대한 디스크 사용량만 계산합니다 . 따라서 foo.sql하드 링크 bar.sql(또는 심볼릭 링크가 -H사용되는 경우)인 경우 디스크 사용량은 한 번만 계산됩니다.

하드 링크를 지원하지 않는 파일 시스템에 파일을 복사하려는 경우 이로 인해 혼란이 발생할 수 있습니다. 대부분의 경우 하드 링크 파일은 두 번 복사되므로 대상 시스템에 표시된 것보다 더 많은 디스크 공간이 필요하게 됩니다 du.

GNU 구현에서는 du이 옵션을 사용하여 중복 제거를 건너뛸 수 있습니다.-l

답변2

귀하의 예에서 작동하지 않는 것은 무엇입니까? 돈 좀 줄래?  man du-c옵션을 표시하면 다음을 사용하여 합계가 제공됩니다.

du -sc -- *.sql

-h또는 매개변수를 좋아할 수도 있습니다 -k.

답변3

-c귀하의 질문은 매우 모호하지만 총계를 생성하기 위한 플래그를 찾고 있는 것 같습니다 .

du -c -- *.sql

답변4

find를 사용하여 파일 목록(또는 다른 것)을 생성할 수 있는 경우 다음을 수행할 수도 있습니다.

find {directory} {matching expression} -exec stat -c "%s" {} \; | awk 'BEGIN{total=0} {total=total+$1} END{print total/1000000.00}'

예를 들어 /some/dir에 있는 모든 .jar 파일의 총 크기(MB)를 보려면 다음을 수행하세요.

find /some/dir -name '*.jar' -exec ...

이는 파일당 하나의 프로세스를 수행하지만 결과는 매우 빠릅니다.

관련 정보