ls -l показывает права и размер, но часто нужно больше — номер inode, точное время в секундах с эпохи, или формат под парсинг в скрипте. Для этого в GNU coreutils есть stat.

Голый вызов stat file.txt выдаёт сразу всё: inode, число хардлинков, права в символьном и восьмеричном виде (%a/%A), владельца и три времени. Разница между ними путает почти всех в первый раз: atime (%x/%X) — последнее чтение файла, mtime (%y/%Y) — последнее изменение содержимого, ctime (%z/%Z) — последнее изменение метаданных (прав, владельца, количества ссылок), и это не «creation time», как иногда думают по аналогии с Windows.

Для скриптов сырой текстовый вывод неудобен — тут помогает --format/-c с собственным шаблоном:

stat -c '%n %a %s %Y' file.txt

Здесь %n — имя файла, %a — права в восьмеричном виде (удобно сравнивать с тем, что ожидает chmod), %s — размер в байтах, %Y — mtime в секундах с эпохи, что уже можно сравнивать числами без парсинга дат.

#linux #bash