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

ls

Список файлов каталога — права, владельцы, размеры, даты, сортировка

ls показывает содержимое каталогов и сведения о файлах. Без аргументов — текущий каталог, скрытые файлы (имя начинается с точки) не показываются. В песочнице — GNU coreutils 9.4.

Синтаксис

ls [опции] [файл_или_каталог…]

Если аргумент — каталог, ls печатает его содержимое; чтобы увидеть сам каталог, добавь -d. Несколько аргументов: сначала файлы, потом каждый каталог отдельным блоком с заголовком имя:.

Код возврата: 0 — всё в порядке, 1 — мелкие проблемы (не открылся подкаталог), 2 — серьёзные (аргумента не существует).

Длинный формат -l

-rw-r--r--  1 root root  1530 Sep 30 13:10 /etc/passwd
drwxr-xr-x  2 root root  4096 Oct 13 15:20 sub
lrwxrwxrwx  1 root root     5 Oct 13 15:20 lnk -> a.txt
crw-rw-rw-  1 root root  1, 3 Oct 13 15:20 /dev/null
КолонкаЧто значит
1-й символтип: - файл, d каталог, l символическая ссылка, c символьное устройство, b блочное устройство, p именованный канал (FIFO), s сокет
rw-r--r--права владельца, группы, остальных. s/S на месте x — SUID/SGID (с x / без), t/T — sticky-бит (как у /tmp: drwxrwxrwt)
+ после праву файла есть ACL (смотри getfacl)
числосчётчик жёстких ссылок; у каталога обычно 2 + число подкаталогов (в overlayfs контейнеров бывает просто 1)
root rootвладелец и группа (-n — числовые UID/GID)
размерв байтах (-h — в K/M/G). У каталога — размер самой записи каталога (обычно 4096), не содержимого. У устройств — пара «старший, младший» номер
датавремя изменения содержимого (mtime). Файлы моложе полугода — Мес ДД ЧЧ:ММ, старше — Мес ДД ГГГГ
имядля ссылки — имя -> цель

Строка total N над списком — сколько места занимают перечисленные файлы, в блоках по 1 КиБ (с -h — в K/M).

Опции

Что показывать

ОпцияЧто делает
-aпоказывать всё, включая скрытые и ./..
-Aскрытые показывать, а . и .. — нет
-dпоказать сам каталог, а не его содержимое: ls -ld /etc
-Rрекурсивно обойти подкаталоги
-I 'шаблон'скрыть подходящие имена (можно повторять); --hide='шаблон' — то же, но -a/-A его отменяют
-Lдля ссылок показывать сведения о цели, а не о самой ссылке
-Hследовать ссылкам только из командной строки

Формат вывода

ОпцияЧто делает
-lдлинный формат (таблица выше)
-hразмеры в виде 1.5K, 234M, 2G (степени 1024); --si — степени 1000
--block-size=Mпоказывать размеры в заданных единицах (K, M, G), округляя вверх
-nкак -l, но числовые UID и GID вместо имён
-g / -oкак -l, но без владельца / без группы
-iномер inode перед именем
-sзанятое на диске место в блоках (с -h — в K/M)
-1по одному имени в строке
-mчерез запятую в строку
-Fзначок типа после имени: / каталог, * исполняемый, @ ссылка, | FIFO, = сокет
-pтолько / после каталогов
--full-timeполная дата с секундами, наносекундами и поясом
--time-style=long-isoдата 2026-10-13 15:20; full-iso, iso, +ФОРМАТ (как у date): --time-style=+%F
-Qимена в двойных кавычках; -N — вообще без кавычек
--color=autoраскраска по типам, только если вывод идёт в терминал; always — всегда, never — никогда
--group-directories-firstкаталоги в начале списка

Сортировка

По умолчанию — по имени с учётом локали.

ОпцияКак сортирует
-tпо времени изменения (mtime), новые сверху
-Sпо размеру, крупные сверху
-Xпо расширению
-v«естественно»: b2 раньше b10
-Uне сортировать (порядок в каталоге) — быстрее на огромных каталогах
-rперевернуть любой порядок: -ltr — старые сверху, свежие внизу
--sort=WORDsize, time, version, extension, width, none
-uс -lt: сортировать и показывать по времени доступа (atime)
-cс -lt: по времени изменения метаданных (ctime)
--time=birthиспользовать время создания файла (если ФС его хранит)

Примеры

# подробно, со скрытыми файлами и человеческими размерами
ls -lah /etc/ssh

# права самого каталога, а не его содержимого
ls -ld /var/log

# самые свежие файлы — внизу списка
ls -ltr /var/log

# пять самых больших файлов в каталоге
ls -lS /usr/bin | head -6

# только подкаталоги текущего каталога
ls -d */

# номера inode: у жёстких ссылок они совпадают
ls -li

# дата в ISO-формате — удобно для сравнения и скриптов
ls -l --time-style=long-iso /etc/hostname

# числовые UID/GID — видно, если владельца нет в /etc/passwd
ls -ln /srv

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

  • Не разбирай вывод ls в скриптах. Имена с пробелами и переводами строк ломают for f in $(ls), а формат даты зависит от возраста файла и локали. Используй глоб for f in * или find … -print0.
  • Вывод в терминал и в конвейер различается. В терминале — колонки и имена в кавычках ('with space'), в конвейере (ls | …) — по одному имени в строке без кавычек.
  • ls -l каталог показывает содержимое, а не права каталога. Для самого каталога — -d.
  • Ссылка на каталог: ls ссылка покажет содержимое цели, а ls -l ссылка — саму ссылку (ld -> d). Добавь / в конце (ls -l ссылка/) или -L, чтобы заглянуть внутрь.
  • Размер каталога в -l (4096) — не размер содержимого. Сколько весит каталог целиком, считает du.
  • -t, -S и -r с файлами-аргументами сортируют только файлы; каталоги из аргументов всё равно выводятся отдельными блоками после них — добавь -d.
  • --block-size=K округляет вверх: файл в 1530 байт покажется как 2K.
  • Цвета. В bash-скрипте алиаса ls --color=auto нет — без --color вывод не раскрашивается. С --color=always в файл попадут escape-коды.

См. также

stat · find · chmod · df-du · ln · acl