"긴 목록 형식"을 사용하지 않고 ls 및 실제 파일 크기

"긴 목록 형식"을 사용하지 않고 ls 및 실제 파일 크기

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), stat4096 또는 블록 크기가 보고됩니다.


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

https://man7.org/linux/man-pages/man1/find.1.html

관련 정보