파일 세트의 크기 찾기

파일 세트의 크기 찾기

특정 사용자가 소유한 모든 파일의 전체 크기를 찾으려고 합니다.

이렇게 하려고 하면 다른 명령을 실행할 때 크기가 달라집니다.

특정 사용자가 소유한 모든 파일의 전체 크기를 올바르게 알아내는 명령은 무엇입니까?

$ find . -type f -user silviya|ls -lh|head -1 
total 68K
$ find . -type f -user agalya|wc -c
284
$ find . -type f -user agalya|du -sk
120 .

이러한 변화의 이유는 무엇입니까?

답변1

존재하다:

find . -type f -user silviya|ls -lh|head -1 

findto의 출력을 파이핑 ls하지만 ls입력을 읽지 않습니다. 나열할 파일 목록을 인수로 사용합니다. 여기서와 같은 인수가 없으면 현재 디렉터리에 숨겨지지 않은 파일이 나열됩니다. 따라서 여기서는 현재 디렉터리에서 숨겨지지 않은 모든 파일(모든 유형)의 디스크 사용량을 얻을 수 있습니다(주어진 파일의 크기는 각 하드 링크에 대해 계산됩니다).

존재하다:

find . -type f -user agalya|wc -c

출력에서 바이트를 계산하므로 find이는 디스크 사용량이나 파일 크기가 아닌 파일 경로(및 개행 구분 기호)의 크기입니다.

존재하다:

find . -type f -user agalya|du -sk

ls와 마찬가지로 du파일 목록을 입력이 아닌 인수로 사용합니다. 따라서 여기서는 현재 디렉터리에 있는 모든 파일과 디렉터리의 디스크 사용량을 (재귀적으로) 얻을 수 있습니다.

GNU 유틸리티를 사용하여 가지고 있는 모든 일반 파일의 디스크 사용량을 확인하려면 agalya다음을 수행하세요.

find . -type f -user agalya -print0 | du -hc --files0-from=- | tail -n 1

--files0-from표준 입력(여기에 표시됨)에서 파일 목록을 가져오도록 지시합니다 du( GNU에만 해당) . 누적 크기를 제공합니다(동일한 파일에 대한 하드 링크는 한 번만 계산됩니다).du--c

파일 가져오기확실히디스크 사용량 대신 크기에 이 --apparent-size옵션을 추가하세요 du(역시 GNU에 따라 다름). -l하드 링크를 여러 번 계산하는 옵션(GNU 전용)을 추가합니다 .

답변2

명령 #1은 파일의 전체 크기와 해당 내용을 "유용한" 바이트 단위로 제공합니다.

명령 #3은 파일을 저장하는 데 사용된 디스크 공간을 제공합니다. 디스크는 블록(보통 4kB 길이)으로 나누어져 있으며 여러 파일에서 공유할 수 없습니다. 따라서 1에서 4096B 사이의 모든 크기의 파일은 4kB의 디스크 공간을 사용합니다. 예를 들어 [이것은 단순화되었습니다. 일부 FS 유형(예: ext)에서는 데이터 블록을 전혀 사용하지 않고도 매우 작은 파일을 파일 테이블 자체에 저장할 수 있습니다. ]

명령 #2는 문자 수만 계산합니다.파일 이름. (명령 출력의 크기입니다 find.)

관련 정보