Глава 28. Вывод содержимого директории

Постановка задачи
Идеи реализации
Разработка
Схема программы
Файловые тесты -d и -f
Чтение оглавления директории
Готовая программа

Стандартная программа find умеет выводить оглавление директорий и всех их поддиректорий на всю глубину. Имена директорий указываются, как обычно, в командной строке. Эта программа умеет ещё много чего (для этого при её запуске предусмотрена масса ключей). Мы напишем свою, упрощённую версию этой программы (назовём её find.pl), и реализуем в ней главную функцию программы find — полный вывод всего содержимого директории на экран:

(здесь пропущено более 1200000 строк вывода — в нашем компьютере много файлов).

Поясним этот пример. Исследуя корневую директорию (/), программа find нашла директорию /boot и углубилась в неё. Там, помимо обычных файлов, нашлась поддиректория /boot/grub. Программа вывела содержимое /boot/grub. Спустя некоторое время программа натолкнулась на директорию /noah. Внутри неё нет ничего, кроме поддиректории /noah/lost+found, однако атрибуты доступа этой директории и права пользователя, от имени которого запущена программа find, не позволяют прочитать её оглавление. В таких случаях выдаётся предупреждение, и такая директория пропускается, а программа продолжает свою работу.

Параметры в командной строке должны обрабатываться по очереди. Позаботимся также о том, чтобы в случае, когда в командной строке не указаны имена директорий, наша программа работала бы с текущей директорией (как если бы в командной строке была бы задана директория .). Если среди параметров командной строки имеются имена обычных файлов, они выводятся. Программа должна ругаться на несуществующие файлы/директории:

Информатика-54© А. Н. Швец