← Весь справочник

stat

Все метаданные файла — права, владелец, размер, inode, времена — в нужном формате

stat показывает метаданные файла из inode: тип, права, владельца, размер, число ссылок, все времена. С -c печатает только нужные поля в заданном формате — это надёжнее, чем вырезать колонки из ls -l. С -f — сведения о файловой системе. В песочнице — GNU coreutils 9.4.

Синтаксис

stat [опции] файл…
stat -c 'формат' файл…
stat -f [-c 'формат'] путь…

Код возврата: 0 — все файлы найдены, 1 — хотя бы одного нет.

Вывод по умолчанию

  File: f
  Size: 6         	Blocks: 8          IO Block: 4096   regular file
Device: 0,64	Inode: 1134952     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-10-13 15:21:52.594726010 +0000
Modify: 2026-10-13 15:21:52.594726010 +0000
Change: 2026-10-13 15:21:52.594726010 +0000
 Birth: 2026-10-13 15:21:52.594726010 +0000
ПолеЧто значит
Sizeразмер в байтах (у ссылки — длина пути цели)
Blocksсколько 512-байтных блоков реально занято на диске
IO Blockрекомендуемый размер блока ввода-вывода
типregular file, directory, symbolic link, fifo, socket, character special file…
Deviceномер устройства, на котором лежит файл
Inode / Linksномер inode / число жёстких ссылок
Access: (0644/-rw-r--r--)права в восьмеричном и символьном виде
Uid / Gidчисловой ID и имя владельца / группы
Access / Modify / Changeatime (чтение), mtime (содержимое), ctime (метаданные)
Birthвремя создания (-, если ФС его не хранит)

Опции

ОпцияЧто делает
-c 'формат'печатать по формату, в конце — перевод строки
--printf='формат'то же, но перевода строки нет, а \n, \t понимаются
-Lдля символической ссылки показать данные цели, а не самой ссылки
-fданные о файловой системе, на которой лежит путь
-tвсё одной строкой (краткий машинный формат)

Формат -c: файл

КодЧто печатаетПример
%nимя файлаf
%Nимя в кавычках, у ссылки — с целью'l' -> 'f'
%aправа в восьмеричном виде (%#a — с ведущим нулём)644, 4755
%Aправа в символьном виде с типом-rw-r--r--
%f«сырой» режим в шестнадцатеричном виде81a4
%Fтип файла словамиregular file
%U / %uимя / UID владельцаroot / 0
%G / %gимя / GID группыroot / 0
%sразмер в байтах6
%b / %Bчисло блоков / размер блока в байтах для %b8 / 512
%iномер inode1134952
%hчисло жёстких ссылок1
%d / %Dномер устройства (десятичный / hex)64
%mточка монтирования/
%oрекомендуемый размер блока ввода-вывода4096
%x / %Xatime: читаемо / секунды Unix2026-10-13 15:21:52.59… +0000 / 1791904912
%y / %Ymtime: читаемо / секунды Unix
%z / %Zctime: читаемо / секунды Unix
%w / %Wвремя создания: читаемо (-, если неизвестно) / секунды (0)
%t / %Tстарший / младший номер устройства (hex) — для /dev/*1 / 3 у /dev/null
%Cконтекст SELinux

Ширина и точность как в printf: %10s — выровнять вправо на 10 символов, %-6s — влево, %.19y — дата без долей секунды (2026-10-13 15:21:58), %.3Y — секунды с миллисекундами.

Формат -c вместе с -f: файловая система

КодЧто печатает
%Tтип ФС словами (ext2/ext3, tmpfs, overlayfs…)
%bвсего блоков данных
%f / %aсвободных блоков / доступных обычному пользователю
%Sразмер блока для этих счётчиков
%c / %dвсего inode / свободных inode
%lмаксимальная длина имени файла
%nимя пути

Примеры

# права в восьмеричном виде — для сравнения в скрипте
stat -c '%a' /etc/shadow

# права, владелец, группа одной строкой
stat -c '%A %U:%G %n' /etc/passwd /etc/shadow

# размер в байтах
stat -c %s backup.tar.gz

# время изменения в секундах — удобно считать возраст
echo $(( $(date +%s) - $(stat -c %Y app.log) ))

# дата изменения без наносекунд
stat -c '%.19y' app.log

# табличка «имя — размер» через --printf
stat --printf '%n\t%s\n' *.log

# данные цели ссылки, а не самой ссылки
stat -L /etc/localtime

# тип ФС и свободные inode
stat -f -c 'тип=%T inode свободно=%d' /

Подводные камни

  • -c не понимает \t и \n: stat -c '%n\t%s' напечатает \t буквально. Для управляющих символов — --printf (и тогда \n в конце пиши сам).
  • Ссылка по умолчанию — сама ссылка. stat ссылка покажет symbolic link, права 777 и размер = длина пути. Для цели — -L.
  • %a не дополняет нули: у chmod 755 будет 755, у chmod 4755 — 4755. Для единообразной ширины — %#a (0755) или %04a.
  • %Y vs %y. Для арифметики бери секунды (%Y); читаемый %y содержит наносекунды и пояс.
  • %w часто -. Время создания хранят не все ФС, и не все инструменты его копируют.
  • Это GNU-синтаксис. На macOS/BSD у stat другие ключи (-f '%Lp'), скрипты с stat -c там не работают.

См. также

ls · touch · chmod · chown · find · df-du · date