디렉토리 목록에 파일 크기의 합을 표시합니다.

디렉토리 목록에 파일 크기의 합을 표시합니다.

Windows dir디렉터리 목록 명령 끝에는 나열된 파일이 차지하는 전체 공간을 표시하는 줄이 있습니다. 예를 들어, 현재 디렉터리의 모든 파일, 크기 및 크기 합계를 dir *.exe표시합니다 . Bash의 별칭과 비슷한 기능을 .exe갖고 싶지만 dir정확히 어떻게 해야 할지 모르겠습니다.

현재 제가 alias dir='ls -FaGl'보여 .bash_profile드리는

drwxr-x---+  24 mattdmo  4096 Mar 14 16:35 ./
drwxr-x--x. 256 root    12288 Apr  8 21:29 ../
-rw-------    1 mattdmo 13795 Apr  4 17:52 .bash_history
-rw-r--r--    1 mattdmo    18 May 10  2012 .bash_logout
-rw-r--r--    1 mattdmo   395 Dec  9 17:33 .bash_profile
-rw-r--r--    1 mattdmo   176 May 10  2012 .bash_profile~
-rw-r--r--    1 mattdmo   411 Dec  9 17:33 .bashrc
-rw-r--r--    1 mattdmo   124 May 10  2012 .bashrc~
drwx------    2 mattdmo  4096 Mar 24 20:03 bin/
drwxrwxr-x    2 mattdmo  4096 Mar 11 16:29 download/

예를 들어. 대답은 다음에서 비롯됩니다.이 문제:

dir | awk '{ total += $4 }; END { print total }'

이것은 나에게 총계를 제공하지만 디렉토리 목록 자체를 인쇄하지는 않습니다. ls원하는 매개변수를 전달 dir하고 전체 목록과 합계를 얻을 수 있도록 이를 한 줄이나 쉘 스크립트로 변경할 수 있는 방법이 있습니까 ? 예를 들어, dir -R *.jpg *.tif모든 하위 디렉터리에 있는 이러한 파일 형식의 목록과 전체 크기를 얻기 위해 실행하고 싶습니다 . 이상적으로는 각 하위 디렉터리의 크기를 알 수 있으면 좋겠지만 꼭 그럴 필요는 없습니다.

답변1

이 목적을 위한 UNIX 명령이 이미 있습니다.du

그냥 해:

du -bch 

규칙에 따라 명령 끝에 하나 이상의 파일 또는 디렉터리 경로를 추가할 수 있습니다. -h크기를 인간에게 친숙한 형식으로 변환하고 -b디스크 사용량 대신 파일 크기를 제공하며 -c마지막에 총계를 제공하는 확장 프로그램입니다.

답변2

당신은 그것을 사용할 수 있습니다du -h -c directory|tail -1

그러면 메모리 사용량 정보가 포함된 줄이 생성됩니다.

답변3

다음 기능은 대부분의 요구 사항을 충족합니다.

dir () { ls -FaGl "${@}" | awk '{ total += $4; print }; END { print total }'; }

...하지만 요청한 내용은 제공되지 않습니다 dir -R *.jpg *.tif. 왜냐하면 그것이 작동하는 방식이 아니기 때문입니다 ls -R. 너는 놀고 싶을지도 몰라find이에 대한 실용성.

답변4

합계를 구하려는 현재 행을 인쇄하세요.

dir | awk '{ print; total += $4 }; END { print "total size: ",total }'

관련 정보