Слово рекурсивное относится к тому факту, что команды операционной системы Linux или Unix имеют дело с содержимым папок, и если в папке есть подпапки и документы, инструкция по-прежнему работает со всеми этими документами (рекурсивно). Возможно, у дочернего каталога есть собственный набор файлов и папок (например, большие папки) и т. Д. И т. Д. Вы будете использовать разные инструкции Linux для рекурсивного обхода каждой папки, прежде чем добраться до края указанной папки. На этом уровне инструкции Linux возвращаются к отключению дерева и повторяют процесс для всех существующих подпапок. В этом руководстве вы изучите все методы рекурсивного перечисления каталогов.
Примеры каталогов простых списков
Прежде всего, вы должны знать, как составить список всех каталогов вашей системы Linux с помощью простой команды list. Откройте терминал командной строки и попробуйте следующую команду ls ’, чтобы вывести список только каталогов. Он будет не только перечислять каталоги, но и общее количество подпапок и файлов, находящихся в них. В выходных данных отображаются папки с информацией об их владельце, группе, правах чтения и записи и дате создания папок.
$ ls -l
Чтобы вывести список всех каталогов и файлов в вашей системе Linux, вы должны использовать -la вместо простого -l в команде list. Следовательно, для этого выполните обновленную команду. Вывод показывает все файлы и папки вместе с дополнительной информацией.
$ ls -la
Чтобы просто перечислить каталоги без дополнительной информации, попробуйте следующую команду с флагом -d.
$ ls –d * /
Вы также можете использовать ту же команду с небольшими изменениями для вывода списка папок с дополнительной информацией. Вам просто нужно добавить флаг -l в эту команду следующим образом:
$ ls –l –d * /
Чтобы проверить только общее количество файлов в конкретном домашнем каталоге, попробуйте в оболочке команду, представленную ниже. Вы получите общее количество файлов в вашей операционной системе Linux.
$ ls –l | egrep –v ‘^ d’
Пример рекурсивного листинга каталогов
В системах Linux доступны различные типы рекурсивных команд, которые можно использовать для рекурсивного перечисления каталогов. Чтобы понять каждый из них по отдельности, предположим, что в вашем каталоге Linux есть 5 файлов с именем Documents.
Список рекурсивно с использованием флага -lR
Использование флага -lR в вашем запросе для рекурсивного перечисления всех каталогов вашей системы Linux - это первый способ сделать это. После выполнения приведенной ниже команды list будут перечислены все папки и их подпапки вместе с их бонусными данными, как показано в выходных данных.
$ ls -lR
Давайте просто рекурсивно перечислим все файлы или папки из определенной папки или каталога вашей системы Linux. Для этого добавьте путь к определенному каталогу, чтобы он отображался рекурсивно. Мы хотим рекурсивно перечислить все файлы и папки каталога Documents, находящиеся в домашнем каталоге, с помощью обновленной ниже команды. На выходе отображаются все файлы и папки в папке «Документы» вместе с дополнительной информацией.
$ ls –lR / home / aqsayasin / Documents /
Список рекурсивно с помощью команды поиска
Дайте себе понять, что не все системы Linux, например macOS, Unix-подобные ОС, могут использовать -R для вывода списка каталогов. В этом случае для удовлетворения наших потребностей доступны другие команды, а именно команды поиска и печати. В этой команде мы дадим путь к папке вместе с использованием команды -ls. Когда в команде используется -ls, это означает, что он также покажет дополнительную информацию о постоянных файлах и папках в определенном каталоге. Попробуйте указанную ниже команду в оболочке, чтобы рекурсивно перечислить все файлы и папки в каталоге Documents.
$ find / home / aqsayasin / Documents / -print -ls
Теперь вам нужно попробовать ту же самую инструкцию в оболочке с небольшими изменениями. Мы не будем использовать в этой команде флаг -ls, чтобы перестать показывать дополнительную информацию о файлах. Выполните приведенный ниже запрос в оболочке, и вы получите отображаемый результат.
$ find / home / aqsayasin / Documents / -print
Список рекурсивно с помощью команды -du
Давайте посмотрим на другой пример, чтобы рекурсивно перечислить файлы или каталоги с помощью другого нового метода. На этот раз мы будем использовать команду -du для достижения нашей цели. Эта команда содержит флаг -a. Наряду с флагами мы также должны указать расположение каталога. Давайте выполним приведенную ниже инструкцию в оболочке терминала, чтобы рекурсивно перечислить все папки или файлы каталога Documents. Вывод показывает 5 записей для него, как показано ниже. Вы можете видеть, что эта команда также показывает количество укусов, находящихся в каждом файле.
$ du –a / home / aqsayasin / Documents /
Список рекурсивно с использованием древовидной команды
И последнее, но не менее важное: у нас есть очень простой и легкий в использовании метод древовидной команды для рекурсивного перечисления файлов или папок. Мы пока не будем использовать в этой команде какие-либо флаги. Вы должны указать местоположение каталога вместе с деревом ключевых слов. Давайте посмотрим на это с помощью приведенной ниже команды. Выходные данные показывают выходные данные разветвленного типа в виде дерева каталога Documents. На выходе он показывает 0 каталогов и 5 файлов.
$ tree / home / aqsayasin / Documents /
Давайте попробуем использовать ту же древовидную команду в другом месте. На этот раз мы рекурсивно перечисляем папки домашнего каталога пользователя aqsayasin. На выходе показаны ветви папки Home, в которых всего 14 различных папок, подпапок и 5 файлов.
$ tree / home / aqsayasin /
Заключение
Мы испробовали все рекурсивные методы для рекурсивного перечисления каталогов и файлов, например, -lR flag, find and print, du и tree command