Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # Проверка правильности ввода из командной строки
- checkIsCorrectInput() {
- if [ $1 -ne 3 ]; then
- echo "Введено неверное количество аргументов!"
- echo "Формат ввода: $0 <каталог> <глубина вложенности> <файл вывода>"
- echo "Глубина вложенности: 1 - файлы начального каталога, 2 - файлы подкаталогов и т.д."
- echo "Повторите запуск программы!"
- exit 1
- fi
- }
- # Процедура для вывода текста условия
- printProblemStatement() {
- echo -e "\nДанная программа обходит заданный каталог и его подкаталоги до заданной глубины,\n\t затем выводит общее число каталогов на консоль, а подробный отчет в указанный файл"
- }
- # Процедура вывода результатов поиска
- printSearchResults() {
- echo -e "\nОбщее количество папок: $countAllDirs"
- }
- # Функция для рекурсивного поиска каталогов в каталоге
- searchInDirectory() {
- local dirFiles="$1"
- local depth="$2"
- local innerDirCount=0
- local innerFileCount=0
- for file in $dirFiles/*
- do
- if [ -d "$file" ]; then
- echo -e "----------------------------------------------------------------------------------" >> $outputFile
- echo -e "\n$file\n" >> $outputFile
- local nextDepth=$(($depth - 1))
- if [ $depth -ge 1 ]; then
- searchInDirectory $file $nextDepth
- fi
- let "countAllDirs=countAllDirs + 1"
- let "innerDirCount=innerDirCount + 1"
- fi
- if [ -f "$file" ]; then
- let "innerFileCount=innerFileCount + 1"
- fi
- done
- echo -e "\tКоличество вложенных каталогов в каталог $dirFiles: $innerDirCount" >> $outputFile
- echo -e "\tКоличество вложенных файлов в каталог $dirFiles: $innerFileCount" >> $outputFile
- echo -e "----------------------------------------------------------------------------------\n" >> $outputFile
- }
- #########################################
- # Начало выполнения программы #
- #########################################
- checkIsCorrectInput $#
- > $3 #очищаем файл перед записью
- countAllDirs=0
- outputFile=$3
- startDepth=$2
- printProblemStatement
- searchInDirectory $1 $2
- printSearchResults
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement