Команда ls в Linux — полное руководство
TL;DR
Команда ls показывает список файлов и папок в каталоге и может выводить подробные сведения (права, владелец, размер, время). Освойте флаги -l, -a, -h, -R и комбинации с grep, sort и xargs, чтобы эффективно просматривать и фильтровать содержимое файловой системы.
Важное: ls выводит «снимок» каталога в момент вызова — для поиска по контенту используйте find или grep по файлам.
О чём эта статья
Это подробное руководство по команде ls в Linux. Вы найдёте синтаксис, распространённые флаги, реальные примеры, советы по использованию с другими утилитами и сценарии для разных ролей: администратору, разработчику, новичку. В конце — шпаргалка, чек-листы и FAQ.
Что делает команда ls
ls перечисляет содержимое каталога — файлы и подкаталоги. Она не ищет внутри файлов и не показывает содержимое архивов. В простейшем случае команда выводит только имена; с флагами добавляются метаданные.
Коротко о терминах:
- Каталог — папка в файловой системе.
- Права (permissions) — кто и как может работать с файлом.
- Владелец/группа — учетные данные, связанные с файлом.
Синтаксис
ls [опции] [каталог...]Если каталог не указан, ls работает в текущем каталоге (.). Можно передать несколько путей через пробел.
Базовые примеры
- Показать имена в текущем каталоге:
ls- Показать содержимое конкретного каталога:
ls /boot- Показать несколько каталогов:
ls /boot /usrЧасто используемые флаги и комбинации
- -l — длинный формат (права, ссылки, владелец, группа, размер, дата/время, имя)
- -a — показывать все, включая скрытые файлы (имя начинается с .)
- -h — «читаемые» размеры (4.0K, 2.9M)
- -R — рекурсивно перечислять подкаталоги
- -S — сортировать по размеру (убыв.)
- -t — сортировать по времени изменения (новые — первыми)
- -r — обратный порядок сортировки
- -F — добавлять символ типа объекта (/ для каталогов, * для исполняемых и т.д.)
- -d — показывать каталог как запись (показать только сам каталог, не его содержимое)
- -s — выводить занятое место в блоках для каждой записи
Комбинации:
ls -lah # длинный, все файлы, удобные для чтения размеры
ls -R /var # рекурсивно вывести /var
ls -S -r # отсортировать по возрастанию размераРазбор вывода ls -l
Пример:
-rw-r--r-- 1 alice staff 2.9M Feb 8 13:53 file.tar.gz
drwxr-xr-x 3 bob dev 4.0K Feb 8 13:53 src
lrwxrwxrwx 1 root root 9 Feb 8 12:00 link -> /some/targetПояснение столбцов слева направо:
- Тип и права (первые 10 символов). Первое — тип: “-“ обычный файл, “d” — каталог, “l” — символическая ссылка и т.д.
- Число ссылок (количество жёстких ссылок или каталогов).
- Владелец файла.
- Группа владельца.
- Размер (в байтах или удобный формат с -h).
- Дата и время последней модификации.
- Имя файла (для ссылок — и цель ссылки).
Права читаются как три триплета: владелец, группа, остальные. Пример rwxr-xr– означает чтение/запись/выполнение для владельца, чтение/выполнение для группы и только чтение для остальных.
Показ только директорий
ls -d */
ls -d /home/*/Опция -d в сочетании со звездочкой удобно фильтрует каталоги. Символ / добавляется при -F.
Рекурсивный вывод и когда он «падает»
ls -R перечисляет каталоги рекурсивно. Это удобно, но:
- В больших деревьях вывода будет очень много — используйте | less или перенаправление в файл.
- ls не предназначен для сложных поисков по критериям (по маске даты/атрибутов) — для этого лучше find.
Пример безопасного использования:
ls -R /var/log | less
ls -R | grep "\.log$"Фильтрация с помощью grep и регулярных выражений
ls по умолчанию не фильтрует по шаблонам регулярных выражений, но вы можете пропускать вывод через grep:
ls -1 | grep '^l' # имена, начинающиеся с буквы l
ls -1 | grep -i 'readme' # нечувствительный к регистру поиск
ls -1 | grep -E '\.(jpg|png)$' # файлы с расширением jpg или pngПримечание: ls -1 (цифра один) выводит имена по одному на строку — удобно для последовательной фильтрации.
Сортировка по времени и по размеру
ls -lt # сортировать по времени модификации, новые вверху
ls -ltr # те же, но в обратном порядке (старые вверху)
ls -lS # сортировать по размеру, большие вверху
ls -lSr # сортировать по размеру, маленькие вверхуТакже есть опции для выбора, какое время показывать: –time=atime|ctime|mtime (в некоторых реализациях coreutils).
Показ читаемого размера
ls -lh-h переводит байты в удобные суффиксы: K, M, G. Это важно при быстром осмотре больших файлов.
Скрытые файлы
По умолчанию файлы, начинающиеся с точки (.) скрыты. Используйте -a или -A:
ls -a # показывает . и .. и все скрытые
ls -A # показывает скрытые, но без . и ..Перенаправление вывода и сохранение в файл
ls -lah > ls-output.txt
cat ls-output.txtПримечание: при перенаправлении вы теряете цветовую разметку и форматирование терминала.
Советы по работе с именами файлов с пробелами и спецсимволами
ls корректно показывает имена, но при последующей обработке используйте нулевой разделитель:
ls -1 -Q # берет имена в кавычки
# Для безопасной передачи в xargs используйте find:
find . -maxdepth 1 -print0 | xargs -0 ls -ldls сам по себе не имеет опции для печати нуль-терминированного вывода; для сложных пайплайнов предпочтительнее find -print0.
Альтернативы и когда использовать другие утилиты
- find — лучший выбор для поиска по маске, времени модификации, размеру и выполнению действий над найденными файлами.
- tree — выводит визуальное древовидное представление каталога.
- stat — показывает подробные атрибуты файла (точное время, права в числовом виде и т.д.).
- du — суммарные размеры каталогов и файлов.
Примеры:
find /var -name "*.log" -type f
tree -a -L 2
stat myfile.txt
du -sh /home/aliceПрактические сценарии и полезные комбинации
- Найти 10 самых больших файлов в каталоге:
ls -lS | head -n 10
# или более надёжно для вложенных структур:
find . -type f -exec du -h {} + | sort -hr | head -n 10- Список изменённых за последние 7 дней:
find . -type f -mtime -7 -ls- Показать только исполняемые файлы:
ls -l | grep '^-..x' # грубая фильтрация по третьему символу триплета прав
# Лучше использовать find:
find . -type f -executable -lsМентальные модели и хитрости
- ls — быстрый «снимок» каталога. Для поиска и операций лучше find.
- Подумайте о формате вывода: для машинной обработки используйте утилиты, которые дают стабильный формат (stat, find -printf).
- Алиасы: во многих дистрибутивах в ~/.bashrc или /etc/profile ls замещён на ls –color=auto или на «ls -la». Знайте свои алиасы:
alias.
Роли: чек-листы
Системный администратор
- Использовать ls -lah для быстрого аудита каталога.
- При проверке логов применять ls -lt /var/log и tail -n.
- Для массовых операций предпочитать find.
Разработчик
- Использовать ls -R | grep для поиска файлов конфигурации в проекте.
- Писать скрипты с учётом специальных символов в именах (использовать find -print0 + xargs -0).
Новичок
- Начать с ls, ls -a, ls -l, ls -lh, ls -R.
- Освоить навигацию: cd, pwd, ls ~, ls ..
Шпаргалка команд (cheat sheet)
| Команда | Что делает |
|---|---|
| ls | Показать имена в текущем каталоге |
| ls -a | Показать скрытые файлы |
| ls -l | Длинный формат (права, владелец, размер, дата) |
| ls -lh | Длинный формат с читаемыми размерами |
| ls -R | Рекурсивно |
| ls -S | Сортировка по размеру |
| ls -t | Сортировка по времени |
| ls -d */ | Показать только каталоги |
Когда ls не подходит (контрпримеры)
- Нужно искать по содержимому файлов — используйте grep или ripgrep.
- Нужно выполнять действие над найденными файлами — используйте find -exec или xargs.
- Нужно получить точные байтовые метрики без округления — используйте stat или du.
- При обработке имён с новыми строками или специальными символами — избегайте парсинга вывода ls; используйте find -print0.
Безопасность и локаль
- Цветная подсветка и символы зависят от окружения TERM и переменных LC_*/LANG.
- Проверяйте алиасы:
alias ls. - Не полагайтесь на порядок вывода ls для критичных скриптов — используйте явную сортировку.
Критерии приёмки
- Вывод должен показывать ожидаемые файлы/каталоги в указанной директории.
- Для длинного формата (-l) должны отображаться права, владелец, группа, размер и время.
- Для реструктурированных отчётов использовать перенаправление в файл и проверять формат.
SOP: быстрый рабочий процесс для проверки каталогов
- Перейдите в каталог: cd /path/to/dir
- Посмотрите все файлы: ls -lah
- Отсортируйте большие файлы: ls -lS | head -n 20
- Сохраните вывод: ls -lah > /tmp/dir-audit-$(date +%F).txt
- При необходимости запустите дополнительные проверки через find.
Примеры реального использования
- Показать все .conf в /etc, включая скрытые, отсортированные по дате:
ls -1t /etc/*.conf /etc/.*.conf 2>/dev/null | head- Сохранить рекурсивный список в файл для дальнейшего анализа:
ls -R /var/www > /tmp/www-tree.txtEdge-case: имена файлов с управляющими символами
ls корректно выводит такие имена, но при парсинге вывода скрипт может сломаться. Для корректной передачи в скрипты пользуйтесь find -print0 и xargs -0.
Mermaid: быстрое дерево решений — какую утилиту выбрать
flowchart TD
A[Нужен список файлов?] --> B{Требуется фильтрация по содержимому?}
B -- Нет --> C[Используйте ls]
B -- Да --> D{Нужна обработка имен с пробелами/новыми строками?}
D -- Да --> E[Используйте find -print0 + xargs -0]
D -- Нет --> F[Используйте find с -name / -mtime]
C --> G[Можно добавить grep/sort/awk]Часто задаваемые вопросы
Как показать скрытые файлы?
Используйте ls -a или ls -A.
Как получить читаемые размеры файлов?
ls -lh покажет размеры в удобной форме (K, M, G).
Как правильно искать по имени и выполнять действие над найденными файлами?
find . -type f -name “*.log” -exec rm {} + или find . -print0 | xargs -0 command.
FAQ (структурированные ответы представлены ниже в JSON-LD)
Резюме
- ls — удобный инструмент для быстрого просмотра каталогов.
- Для более сложных поисков и массовых операций выбирайте find, stat, du и другие утилиты.
- Всегда учитывайте особенности имён файлов и локали. Для автоматизации используйте стабильные форматы вывода.
Похожие материалы
RDP: полный гид по настройке и безопасности
Android как клавиатура и трекпад для Windows
Советы и приёмы для работы с PDF
Calibration в Lightroom Classic: как и когда использовать
Отключить Siri Suggestions на iPhone