Linux ls
명령에는 이러한 옵션이 제공됩니다.
--block-size=SIZE
scale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see
SIZE format below
-l use a long listing format
list subdirectories recursively
-s, --size
print the allocated size of each file, in blocks
나는 이것이 ls -l
실제 파일 크기와 ls -s --block-size=1
파일을 저장하기 위해 할당된 디스크 공간의 양이라고 가정합니다. (이 예에서는 991232 = 968x1024 = 968K입니다.)
$ ls -s --block-size=1 summary.pdf
991232 summary.pdf
$ ls -l summary.pdf
-rwxrwx---. 1 chris chris 989838 May 1 2015 summary.pdf
"긴 목록 형식"에서 추가 정보 없이 파일 크기를 바이트 단위로 얻을 수 있습니까?
답변1
사용자 정의 형식을 사용할 수 있습니다 stat
.
stat -c'%s' summary.pdf
실제 파일 크기(바이트)가 출력됩니다. 블록을 할당하려면 %b
할당된 블록 수와 %B
각 블록의 블록 크기(바이트)를 사용하세요.
이는 와일드카드 및 추가된 파일 이름에도 적용됩니다 %n
. 더 많은 형식 지정 옵션을 보려면 매뉴얼 페이지를 참조하십시오.
답변2
ls
크기와 파일 이름만 표시하는 대체 형식을 원할 경우 이 방법을 사용하면 됩니다.
ls -l | sed "s/ */ /g" | cut -d ' ' -f 5,9-
아니면:
alias size_plus_name="sed 's/ */ /g' | cut -d ' ' -f 5,9-"
ls -l | size_plus_name
ls
스위치나 명령줄 인수에 이 방법을 사용하세요. 를 포함하는 것을 잊지 마세요 -l
.
주목!파일 이름에 공백이 포함되지 않은 경우에만 유효합니다.
그러나 5-9-
(대신 5-9
) wsp가 포함된 파일 이름을 처리하려고 합니다.
(아래 @Scott의 의견 참조)
답변3
du
*를 파일 이름으로 바꾸세요:
du -s -B 1 *
du -s -B 1 * | cut -f 1
stat
디렉토리를 제외하면 다른 것과 동일합니다. du
재귀 크기가 보고됩니다(예: 99999), stat
4096 또는 블록 크기가 보고됩니다.
find
또한 유효함:stat
find * -maxdepth 1 -printf "%s\n"
%p File's name.
%s File's size in bytes.
%f Print the basename; the file's name with any leading directories removed