목록에 있는 파일이 사용하는 디스크 공간을 확인하는 방법은 무엇입니까? 변형을 찾고 있어요
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
링크 대상의 크기를 가져오는 데 사용됩니다 .
du
GNU를 포함한 대부분의 구현 에서는 어떤 경우에도 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 ...
이는 파일당 하나의 프로세스를 수행하지만 결과는 매우 빠릅니다.