Member 14825085 Ответов: 1

Как я могу вставить глубину в свой скрипт


Я пишу скрипт, который ищет заданный путь(первый параметр) и печатает количество dir, файлов и т. д. таблица обновления-это просто функция, которая сортирует мои данные. Моя проблема заключается в том, как я могу вставить сюда глубину поиска. Глубина будет вторым параметром, и скрипт будет искать мой путь до тех пор, пока не достигнет глубины.
Пользователь будет запускать программу как ./script.sh /рабочий стол/папка 2

Что я уже пробовал:

function check_dir {

      echo Checking dir : $1
           for f in `ls $1`
           do

            if [ -d $1/$f ]
           then

             dirs_num=$(($dirs_num+1))
             check_dir $1/$f

            else    

               files_num=$(($files_num+1))
               size=`stat -c%s $1/$f`
               echo $1/$f - $size
               update_table $1/$f $size
       
  fi

     done

}

    files_num=0
    dirs_num=0
    files_names=(a a a)
    files_sizes=(0 0 0)

    check_dir $1 

 echo Found $files_num files and $dirs_num dirs.

1 Ответов

Рейтинг:
9

Richard MacCutchan

Вам просто нужно захватить значение глубины и уменьшать его на 1 каждый раз, когда вы звоните check_dir Что-то вроде:

function check_dir {
    depth = $($2 - 1) // reduce the depth count by 1
    echo Checking dir : $1
    for f in `ls $1`
    do
        
        if [ -d $1/$f ]
        then
        
            dirs_num=$(($dirs_num+1))
            if [ $depth -gt 0 ] // if the depth count is greater than 0
            then
                check_dir $1/$f  $depth// do a recursive check
            fi        
        else    
        
            files_num=$(($files_num+1))
            size=`stat -c%s $1/$f`
            echo $1/$f - $size
            update_table $1/$f $size
        
        fi
        
    done
    
}

NB извиняюсь, если некоторые из моих синтаксических ошибок неверны, прошло уже несколько лет с тех пор, как я писал Шелл-скрипты.


Member 14825085

Спасибо за это я сохраню эту идею