Команда ls. Получение содержимого каталога

Последнее обновление: 12.03.2024

Команда ls отображает список файлов и каталогов в определенном каталоге. Она имеет следующую форму:

ls [options] [FILE]

В качестве необязательного аргумента FILE команда принимает каталог, содержимое которого надо вывести. Если этот аргумент не указан, то выводится содержимое текущего каталога.

Также команде могут передаваться необязательные параметры. Поскольку их довольно много, рассмотрим только основные и распространенные сценарии их использования.

Итак, если команде не передать ни пути к файлу, ни параметры, то она выводит содежимое текущего каталога в виде простого списка:

eugene@Eugene:~$ ls
Desktop    Downloads  image.png  Music     Public     Videos
Documents  hello.txt  index.tml  Pictures  Templates
eugene@Eugene:~$ 

Стоит учитывать, что по умолчанию не выводятся скрытые папки и файлы.

Теперь посмотрим на содержимое конкретного каталога, например, "/usr":

eugene@Eugene:~$ ls /usr
bin    include  lib32  libexec  sbin   src
games  lib      lib64  local    share
eugene@Eugene:~$ 

Вместо конкретной папки можно указать шаблон файлов, в котором символ звездочка * представляет заменитель для произвольных символов. Например:

eugene@Eugene:~$ ls /etc/*a.*
/etc/pnm2ppa.conf

В данном случае получаем все файлы из папки "/etc", которые заканчиваются на "a" и имеют произвольное расширение.

Другой пример - найдем все каталоги и файлы, названия которых начинаются либо на a, либо на b, либо на c:

eugene@Eugene:~$ ls /etc/[abc]*
/etc/adduser.conf     /etc/bindresvport.blacklist
/etc/anacrontab       /etc/brlapi.key
/etc/apg.conf         /etc/brltty.conf
/etc/appstream.conf   /etc/ca-certificates.conf
/etc/bash.bashrc      /etc/crontab
/etc/bash_completion

/etc/alsa:
conf.d

/etc/alternatives:
arptables                jdeps         pager.1.gz

Выражение [abc] указывает, что символ должен представлять букву a, b или c, а звездочка после - [abc]* указывает, что дальше может идти произвольное количество символов. Единственно надо учитывать, что если название каталога соответствует данному фильтру, то выводится все содержимое каталога.

Вывод подкаталогов

Символ звездочка * позволяет вывести также содержимое подкаталогов из текущей папки:

eugene@Eugene:~$ ls *
hello.txt  image.png  index.tml

Desktop:

Documents:

Downloads:
docs.tar.bz2

Music:

Pictures:

Public:

Templates:

Videos:

Получение содержимого подкаталогов

Опция -R позволяет рекурсивно получить содержимое подкаталогов. Например, получим содержимое папки Pictures из домашнего каталога пользователя:

eugene@Eugene:~$ ls -R ~/Pictures
/home/eugene/Pictures:
Screenshots

/home/eugene/Pictures/Screenshots:
'Screenshot from 2024-03-05 14-38-17.png'
'Screenshot from 2024-03-05 14-45-57.png'
'Screenshot from 2024-03-05 14-49-10.png'
'Screenshot from 2024-03-06 14-25-12.png'
eugene@Eugene:~$ 

Вывод только каталогов

Для вывода только каталогов применяется опция -d

ls -d */

Вывод размера файлов

Для рядом с файлами размера в киллобайтах применяется опция -s (нижний регистр)

ls -s

Сортировка файлов

Для сортировки файлов по размеру применяется опция -S (верхний регистр)

ls -S

Для сортировки файлов по времени доступа применяется опция -t

ls -t

Вывод свойств каталогов и файлов

Для вывода свойств каталогов и файлов применяется опция -l:

eugene@Eugene:~$ ls -l
total 216
drwxrwxr-x 2 eugene eugene   4096 Mar  9 10:41 Desktop
drwxrwxr-x 2 eugene eugene   4096 Mar  9 10:40 Documents
drwxrwxr-x 2 eugene eugene   4096 Mar  9 10:44 Downloads
-rw-rw-r-- 1 eugene eugene   1572 Mar  7 21:00 hello.txt
-rw-rw-r-- 1 eugene eugene 177489 Feb 26 09:49 image.png
-rw-rw-r-- 1 eugene eugene     67 Feb 23 23:07 index.tml
drwxrwxr-x 2 eugene eugene   4096 Mar  9 09:49 Music
drwxrwxr-x 2 eugene eugene   4096 Mar  9 09:49 Pictures
drwxrwxr-x 2 eugene eugene   4096 Mar  9 10:41 Public
drwxrwxr-x 2 eugene eugene   4096 Mar  9 10:41 Templates
drwxrwxr-x 2 eugene eugene   4096 Mar  9 09:49 Videos
eugene@Eugene:~$ 

Эта команда отображает данные в виде следующих столбцов:

  • Тип файла: самая первая буква показывает тип файла. Если отображается дефис -, это обычный файл. Если отображается буква d, то это каталог.

  • Разрешения: сразу после типа файла идут разрешения, назначенные этому файлу. Есть девять позиций, которые показывают права доступа к файлам, например, rwxrwxr-x. Далее мы подробнее рассмотрим разрешения.

  • Количество ссылок на содержимое

  • Владение: в Linux у каждого файла есть владелец пользователя и владелец группы. В следующем примере выше всех файлов и каталогов в качестве владельца установлен текущей пользователь - в моем случае "eugene", а в качестве группы - одноименная группа этого пользователя.

  • Размер файла: рядом с владельцем группы отображается размер файла в байтах.

  • Дата и время создания: для каждого файла также отображаются дата и время создания.

  • Имя файла: в последнем столбце вывода можно увидеть имя файла.

Вывод скрытых файлов и каталогов

Использование опции -a выводит скрытые файлы:

eugene@Eugene:~$ ls -a
.              Desktop    image.png  Pictures   Videos
..             Documents  index.tml  .profile
.bash_history  Downloads  .local     Public
.bashrc        hello.txt  Music      Templates
eugene@Eugene:~$ 

Соответственно для вывода подробной информацию эту опцию можно комбинировать с опцией "-l":

ls -a -l

Вывод команды в файл

Нередко применяется вывод команды в файл. Например выведем результат команды в файл "output.txt":

ls -a -l > output.txt
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850