IT/shell

[linux][bash] 파일 크기 감시하기

심량 2024. 11. 11. 10:59

파일 크기를 감시할 때 기존에는 아는 선에서 방법을 조합해서 사용했습니다.

 

리눅스에서 보통 ls -l 하면 파일의 상세 정보가 나오는데 5번째 항목에 파일 크기가 나옵니다.

ls -l kk.jpg
-rw-r--r-- 1 arhis arhis 32277 Oct 28 10:42 kk.jpg

 

이것을 awk 로 5번째에 있는 항목을 출력했습니다.

ls -l kk.jpg | awk '{print $5}'

 

그런데 더 간단하고 pipe 안써도 되는 방법이 있었네요!!

 

stat --format=%s kk.jpg
32767

 

 

참고로 stat 옵션입니다.

더보기

 

$ stat --help
Usage: stat [OPTION]... FILE...
Display file or file system status.

Mandatory arguments to long options are mandatory for short options too.
  -L, --dereference     follow links
  -f, --file-system     display file system status instead of file status
  -c  --format=FORMAT   use the specified FORMAT instead of the default;
                          output a newline after each use of FORMAT
      --printf=FORMAT   like --format, but interpret backslash escapes,
                          and do not output a mandatory trailing newline;
                          if you want a newline, include \n in FORMAT
  -t, --terse           print the information in terse form
      --help     display this help and exit
      --version  output version information and exit

The valid format sequences for files (without --file-system):

  %a   access rights in octal (note '#' and '0' printf flags)
  %A   access rights in human readable form
  %b   number of blocks allocated (see %B)
  %B   the size in bytes of each block reported by %b
  %C   SELinux security context string
  %d   device number in decimal
  %D   device number in hex
  %f   raw mode in hex
  %F   file type
  %g   group ID of owner
  %G   group name of owner
  %h   number of hard links
  %i   inode number
  %m   mount point
  %n   file name
  %N   quoted file name with dereference if symbolic link
  %o   optimal I/O transfer size hint
  %s   total size, in bytes
  %t   major device type in hex, for character/block device special files
  %T   minor device type in hex, for character/block device special files
  %u   user ID of owner
  %U   user name of owner
  %w   time of file birth, human-readable; - if unknown
  %W   time of file birth, seconds since Epoch; 0 if unknown
  %x   time of last access, human-readable
  %X   time of last access, seconds since Epoch
  %y   time of last data modification, human-readable
  %Y   time of last data modification, seconds since Epoch
  %z   time of last status change, human-readable
  %Z   time of last status change, seconds since Epoch

Valid format sequences for file systems:

  %a   free blocks available to non-superuser
  %b   total data blocks in file system
  %c   total file nodes in file system
  %d   free file nodes in file system
  %f   free blocks in file system
  %i   file system ID in hex
  %l   maximum length of filenames
  %n   file name
  %s   block size (for faster transfers)
  %S   fundamental block size (for block counts)
  %t   file system type in hex
  %T   file system type in human readable form

--terse is equivalent to the following FORMAT:
    %n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o %C
--terse --file-system is equivalent to the following FORMAT:
    %n %i %l %t %s %S %b %f %a %c %d

 

자 이제 감시를 해야겠죠?

 

watch -d -n 2 "stat --format=%s kk.jpg"

watch -d -n 2 "stat --format=%s kk.jpg"

 

파일 크기 알아내는 명령을 2초마다(-n 2) 차이점을 강조(-d)해서 보여줍니다.

 

이제 스크립트에서 간편하게 값만 가져오거나 계속 감시할 수 있게 되었습니다.

'IT > shell' 카테고리의 다른 글

[ssh] 명령 주기  (0) 2022.05.18
[bash] 디렉토리 경로명 포함한 ls  (0) 2022.03.16
[shellscript] alias 무시하기  (0) 2015.06.12