본문 바로가기
Old Posts/Linux

[Linux] stat 명령어 사용법

by A6K 2022. 2. 27.

stat 명령어는 리눅스 파일 시스템에 있는 디렉토리와 파일에 대한 다양한 정보를 확인하기 위한 명령어다. 디렉토리 엔트리 리스트의 요약 정보만 출력하는 ls 명령과 다르게 파일의 상세한 정보를 확인할 수 있다.

[root@myhost ~]# stat test.txt
  File: ‘test.txt’
  Size: 1242            Blocks: 8          IO Block: 4096   regular file
Device: 2h/2d   Inode: 5629499534601420  Links: 1
Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2022-02-22 11:44:40.018468800 +0900
Modify: 2022-02-22 11:44:36.902092800 +0900
Change: 2022-02-22 11:44:36.902092800 +0900
 Birth: -

stat 명령어로 알 수 있는 파일의 정보는 다음과 같다.

  • File : 파일 이름
  • Size : 사이즈와
  • Inode : 파일의 inode 번호
  • Uid, Gid : 소유자 및 소유 그룹의 이름과 ID
  • Links : 링크된 파일의 수
  • Context : 보안 정책(SELinux Policy) 정보
  • Access(상단) : 권한 정보
  • Access(하단) : 접근 시각 정보 (atime)
  • Modify : 수정 시각(mtime)
  • Change : 변경 시각(ctime)

stat 명령을 사용할 때, 파일을 여러개 입력할 수도 있으며 이 경우 입력한 순서대로 파일의 정보가 화면에 출력된다.

원하는 정보만 출력

stat 명령을 이용해서 스크립트를 작성할 때, stat 명령의 출력 결과를 모두 받아서 파싱하는 것은 매우 번거롭고 버그를 유발할 수 있다.

이 경우 stat 명령의 --printf 옵션을 이용해서 원하는 값만 출력할 수 있다. 예를 들어

[root@myhost ~]# stat --printf="Inode Number=%i \\n" test.txt
Inode Number=5629499534601420

이런 식으로 원하는 값만 포매팅해서 뽑아올 수 있다. 

포매팅에는 다음 정보들을 사용할 수 있다.

%a access rights in octal
%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 modification, human-readable
%Y time of last modification, seconds since Epoch
%z time of last change, human-readable
%Z time of last change, seconds since Epoch

Stat 명령어 옵션

옵션 긴버전 설명
-L --dereference 링크를 따라감
-f --file-system 파일 상태 대신 파일 시스템 상태를 출력
-c --format=FORMAT 입력한 포맷을 사용해서 정보를 출력, 마지막에는 newline 문자가 출력
  --printf=FORMAT --format 옵션과 비슷함. 다만 무조건 newline을 찍는게 아니고 \\n 을 마지막에 찍어야 newline을 찍음
-t --terse terse form으로 정보를 출력
  --help 사용법 출력
  --version 버전 출력

관련글

 

리눅스 명령어 사용법들

리눅스 명령어 사용법 ifconfig 네트워크 인터페이스 설정관련 ls 디렉토리 엔트리 정보 출력

hbase.tistory.com

 

댓글