- Команда ls в Linux
- Навигация в Linux
- Описание команды ls
- Опции
- Использование нескольких опций одновременно
- Сортировка файлов
- Задать формат вывода файлов на экран
- Формат вывода размера файлов
- Примеры использования команды
- Вывод
- Как вывести список только директорий используя ls в Bash
- 1. С помощью ls увидеть все папки кроме скрытых
- 2. С помощью ls увидеть все папки вместе со скрытыми
- 3. С помощью ls и cut
- 4. Используя echo
- 5. Используя ls и grep
- 6. С помощью find
- 7. printf
- 8. tree
- 9. Пример скрипта: выполнение действие только с каждой папкой в директории
Команда ls в Linux
Чтобы ориентироваться в файловой системе Linux или UNIX, существует к оманда ls . Чтобы узнать, как эффективно ее использовать, необходимо ознакомиться с основами навигации в ОС Linux и дополнительными опциями.
Навигация в Linux
Файловая система дистрибутивов Linux по структуре расположения директорий (каталогов) и файлов напоминает дерево. В основе нее есть корневой каталог, который обозначается через слэш (/) и содержит всю информацию, что есть в ОС. От корневого каталога разрастаются «ветви», то есть другие каталоги.
Путь к папке можно указать в виде полного или относительного пути.
Полный (абсолютный) путь указывает местоположение файлов и директорий, начиная с корневого каталога. В начале данного пути обязательно будет слэш. Пример полного пути:
Относительный путь указывает местоположение объектов относительно текущего положения (текущей директории). В начале адресной строки могут быть символы:
. — указывает на директорию, в которой вы находитесь в данный момент;
.. — обозначает родительскую директорию.
Описание команды ls
Назначение утилиты ls – отображать информацию о директориях (каталогах) и файлах, находящихся в папках. Название команды происходит от английского слова «list» — «список». При задании дополнительных функций вы можете настроить формат вывода нужным образом.
На месте [OPTIONS] задаем желаемую опцию, а затем ссылаемся на файл [FILE] или директорию [FOLDER]. Если при вводе не указывать наименование директории, то по умолчанию вы получите перечисление содержимого директории, с которой вы работаете в настоящий момент.
В некоторых случаях нет необходимости переходить в саму папку. Тогда можно использовать упрощенный вариант и указать сам путь в контексте с командой Is :
Способы указания пути мы описали выше.
Опции
-a – отображение всего содержимого директории, включая скрытые файлы (их имена начинаются с точки).
-A – отображение всех файлов, кроме скрытых.
—author – получение информации об авторе.
-b – вывод имени файла, даже если в нем содержатся служебные символы, которые не видны при печати.
-B – не выводить на экран резервные копии. Распознать резервную копию можно по знаку тильды ~ в конце имени.
-с – вывод файлов с сортировкой по времени внесения последнего изменения. По умолчанию новые файлы расположены первыми в колонке.
-С – вывод файлов колонками.
-d – вывод сведений о директории без вывода ее содержимого.
-F – включить видимость типа объекта. Узнать тип объекта можно по присвоенному символу, который отображается в конце названия файла.
—full-time – вывод информации в полном объеме, включая время в формате ISO.
-i – отобразить inode, в котором находится файл.
-l – вывести длинный список с подробной информацией.
-g – аналогичная с командой -l , но без вывода имени владельца.
-m – разделение элементов списка запятой.
-1 (единица) – в каждой отдельной строке отображать информацию только по одному объекту.
-n – при выводе объектов названия оставлять без кавычек.
-h – для преобразования значений размера файлов в нужный формат. Автоматически размер файлов отображается в байтах без указания единицы измерения.
—color – данная опция позволяет использовать или отключить окрашивание объектов при выводе на экран. В качестве переменных можно использовать три значения, одно из которых – автоматический цветной вывод:
-R – отобразить список из подкаталогов путем рекурсивного вывода.
-S – вывод отсортированных файлов в зависимости от их размера. Объекты будут располагаться по списку от большего по размеру к меньшему.
-Sr – команда, противоположная предыдущей: файлы выводятся от меньшего к большему.
-u – сортировка объектов в зависимости от времени последнего доступа.
-р – если объект является директорией, то при выводе в конце названия отобразиться слэш.
-q – знак «?», если в имени файла есть управляющие символы NPC.
-T – с помощью данной опции можно задать значение ширины табуляции. Изначально оно равно 8.
-w – для задания ширины колонки.
-v – сортировка по номеру версии файла.
Использование нескольких опций одновременно
Команда ls -l в Linux позволяет вывести на экран длинный список из всех папок. Для того чтобы отобразить только выборочную информацию, данную опцию часто совмещают с другими.
ls -lr – вывести список всех элементов, отсортировав их в обратном порядке;
ls -lt – вывести информацию согласно дате последнего изменения;
ls -l —author – отобразить создателя документа.
Таким способом можно совмещать большинство опций.
Команда ls -la помимо основных файлов отображает скрытые документы с точкой в начале имени.
Сортировка файлов
Есть переключатель sort , который позволяет быстро отсортировать выходные данные по нужному параметру, например по размеру, по времени или по версии.
Синтаксис команды имеет следующий вид:
После знака равно вводятся параметры: size ; time ; version ; extension . Также можно не писать слово целиком, а вводить только первую букву.
Задать формат вывода файлов на экран
По умолчанию при использовании команды ls файлы расположены по столбцам. Чтобы вывести их вертикально, горизонтально или перечислить через запятую, используется команда:
(функция задается в виде целого слова или символа)
Across/ -x – файлы расположены в алфавитном порядке по столбцам.
Horizontal/ -x – горизонтальный формат вывода.
Vertical/ -C – вывод столбцов по вертикали.
Commas/ -m – перечисление содержимого директории через запятую.
Long/ -l – подробная информация о файлах в виде длинного списка.
Single-column/ -1 – расположить все файлы в одну колонку.
Формат вывода размера файлов
Чтобы просмотреть размер файлов в определенной единице измерения, используйте опцию:
После знака равно укажите первую букву единицы измерения (K, M, G и т.д.). В этом случае множитель равен 1024. Если вы указываете килобайты, мегабайты, то множитель равен 1000. Для этого можно воспользоваться отдельной опцией —si .
Примеры использования команды
Теперь посмотрим, как используется команда ls в Linux на практике.
- Открываем окно терминала.
- Запускаем команду ls и задаем путь, если нужно.
-
- Чтобы перемещаться по директориям, используйте команду cd (change directory), используя синтаксис:
Запускайте команду с аргументами, иначе вернетесь в домашнюю директорию.
-
- Чтобы узнать рабочую директорию, воспользуйтесь командой pwd (Print Working Directory). При запуске данной команды аргументы не используются.
Теперь можно приступать к тестированию интересующих вас опций. Ниже мы показали несколько примеров, как должны выглядеть вводы и каким должен быть вывод информации.
Для начала введем команду в окне терминала, не используя аргументы. В этом случае мы получим список директорий и файлов в обычном формате.
Videos file.html lib Downloads
File7 Pictures Dir
Documents 020.Pcap PublicВыведем файлы в обратной последовательности:
Public 020.Pcap Documents
Dir Pictures File7
Downloads lib file.html VideosЗатем, чтобы вывести длинный список, задаем команду с -l :
drwxr-xr-x. 3 root root 1785 Jun 29 10:11 Videos
-rw-r--r--. 2 root root 989 Aug 10 12:38 file.html
-rw-r--r--. 2 root root 989 Aug 10 12:38 lib
drwxr-xr-x. 4 root root 1580 Jul 16 01:20 Downloads
-rw-r--r--. 1 root root 3948 Aug 09 03:01 File7
drwxr-xr-x. 3 root root 5170 May 28 13:40 Pictures
drwxr-xr-x. 4 root root 3580 Jun 14 17:45 Dir
drwxr-xr-x. 1 root root 28320 Jul 25 10:11 Documents
-rw-r--r--. 2 root root 1444 May 27 17:45 020.Pcap
drwxr-xr-x. 1 root root 32150 Jun 10 09:58 PublicТеперь интерпретируем то, что отобразилось у нас на экране с использованием команды длинного списка.
- 1 столбец: тип файла. Если в начале строки дефис, то речь идет про обычный файл. Если строка начинается с буквы d, то это директория.
- 2 столбец: следующие 9 букв и символов обозначают права доступа к данным элементам в ФС. Буква r – дает право на чтение файла; x – право на внесение записей в файл; xr – выполнение файла.
- 3 столбец: число указывает, сколько жестких ссылок указывают на этот файл.
- 4 столбец: в них отображается создатель объекта и файловая группа.
- 5 столбец: размер файла.
- 6 столбец: временные данные, когда в последний раз были внесены изменения.
- 7 столбец: название элемента, о котором выведена информация.
Попробуем поработать с этим списком. Сейчас выведем на экран скрытые файлы, используя следующую опцию:
.opera .gconf . Videos file.html
.libreoffice lib Downloads.cshrc File7 ..
Pictures .pki Dir 020. Pcap PublicОтсортируем файлы по дате последнего изменения:
-rw-r--r--. 2 root root 1444 May 27 17:45 020.Pcap
drwxr-xr-x. 3 root root 5170 May 28 13:40 Pictures
drwxr-xr-x. 1 root root 32150 Jun 10 09:58 Public
drwxr-xr-x. 4 root root 3580 Jun 14 17:45 Dir
drwxr-xr-x. 3 root root 1785 Jun 29 10:11 Videos
drwxr-xr-x. 4 root root 1580 Jul 16 01:20 Downloads
-rw-r--r--. 2 root root 989 Aug 10 12:38 file.html
drwxr-xr-x. 1 root root 28320 Jul 25 10:11 Documents
-rw-r--r--. 1 root root 3948 Aug 09 03:01 File7
-rw-r--r--. 2 root root 989 Aug 10 12:38 libПротестируем опцию -F , чтобы узнать, какие объекты являются директориями:
Videos/ file.html Downloads/
File7 Pictures/ Dir/
Documents/ 020. Pcap Public/Вывод
Мы рассмотрели базовую команду, которая понадобится для работы с файловой системой Linux. Этот инструмент доступен во всех дистрибутивах операционной системы. Его использование гораздо эффективнее, чем просматривать свойства документов через графический интерфейс пользователя.
Как вывести список только директорий используя ls в Bash
Для обработки в скриптах может понадобиться в определённой директории получить только список только папок без файлов. Далее показано, как это сделать разными способами.
1. С помощью ls увидеть все папки кроме скрытых
*/ — это шаблон, который соответствует всем подкаталогам в текущем каталоге (* будет соответствовать всем файлам и подкаталогам; / ограничивает его каталогами). Точно так же, чтобы вывести список всех подкаталогов в /home/mial/bin/aur, используйте:
Чтобы вывести только каталоги в текущей папке:
Чтобы вывести данные в столбик:
2. С помощью ls увидеть все папки вместе со скрытыми
Обратите внимание, что */ не найдёт любые скрытые папки. Чтобы включить и их, укажите их явно:
Обратите внимание, что в примере выше используется два шаблона. Чтобы это стало очевидным, рассмотрим следующий пример: нужно показать только каталоги, в том числе и скрытые в директории /home/mial/bin/aur/:
ls -d /home/mial/bin/aur/.*/ /home/mial/bin/aur/*/
3. С помощью ls и cut
Следующий способ показывает каталоги только в текущей папке, но делает это в виде столбика:
Чтобы показать вместе со скрытыми каталогами:
Чтобы показать только директории в папке /home/mial/bin/aur:
ls -d /home/mial/bin/aur/*/ | cut -f1 -d'/'
4. Используя echo
Этот способ не рекомендуется, если в именах папках могут быть пробелы:
Пример показа всех папок кроме скрытых:
Показ всех скрытых и обычных директорий:
Показ всех скрытых и обычных папок в директории /home/mial/bin/aur/:
echo /home/mial/bin/aur/.*/ /home/mial/bin/aur/*/
5. Используя ls и grep
В этом варианте применяется фильтрация вывода с помощью grep. Этот способ имеет ограничение — папки должны выводиться в виде подробного списка:
Чтобы показать вместе со скрытыми папками:
Для вывода только имён директорий (возможны проблемы с директориями, имеющими пробелы в названиях):
6. С помощью find
Команда find имеет очень гибкие критерии поиска.
Чтобы вывести все папки без подпапок (замените /home/mial/bin/aur/ на интересующую папку):
find /home/mial/bin/aur/ -maxdepth 1 -type d
Чтобы вывести все папки с подбапками:
find /home/mial/bin/aur/ -type d
7. printf
Чтобы вывести все директории на отдельных строках (аналогично -1)
Предыдущий пример работает правильно с именами «-«, пробелами и переводами строк (newline).
Улучшенный пример, удаляет последний слэш (/), правильно работает с именами, содержащими пробелы и переводы строк:
Пример с функцией. Наконец, использование списка аргументов внутри функции не повлияет на список аргументов текущей запущенной оболочки:
8. tree
Команда tree также полезна для рассматриваемого вопроса. По умолчанию она показывает все файлы и каталоги на полную глубину, а некоторые символы ascii показывают дерево каталогов.
Но если мы хотим получить только каталоги, без дерева ascii и с полным путём из текущего каталога, вы можете сделать:
-d Список только каталогов. -f Печатает префикс полного пути для каждого файла. -i Делает так, что tree не печатать строки отступа, полезно, когда используется вместе с опцией -f.
И если вам нужен абсолютный путь, вы можете начать с указания полного пути к текущему каталогу:
А чтобы ограничить количество подкаталогов, вы можете установить максимальный уровень подкаталогов с уровнем -L, например:
9. Пример скрипта: выполнение действие только с каждой папкой в директории
Следующий скрипт показывает, как можно выполнить действие с каждой папкой в директории — имя каждой папки будет присваиваться переменной $line:
while read -r line ; do # echo $line # КОД # КОД # КОД done < <(ls -d */)
Чтобы выполнить действие с каждой папкой в директории /home/mial/bin/aur:
while read -r line ; do # echo $line # КОД # КОД # КОД done < <(ls -d /home/mial/bin/aur/*/)