Old Posts/Linux

[Linux] stat 명령어 사용법

A6K 2022. 2. 27. 05:51

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