Официальный сайт студ.городка НГТУ
Software » Помогите написать программку на Cshell. 

#1  19.12.06 21:32

Помогите написать программку на Cshell.

Нужно: Обойти рекурсивно заданный аргументом каталог и распечатать на консоль количество встретившихся каталогов.

Причем, нужно не с помощью встроенных команд, типа find, т.е. программка должна быть не в одну строчку, а с помощью простейших команд Unix.

Offline

#2  19.12.06 22:04

Re: Помогите написать программку на Cshell.

в каком виде - просто тупо, что нашли?

Offline

#3  19.12.06 22:07

Re: Помогите написать программку на Cshell.

Нет, нужно только количество встретившихся каталогов по пути, пока мы "шли" к данному каталогу)

Offline

#4  19.12.06 22:08

Re: Помогите написать программку на Cshell.

Вообщем вникай - год назад писал. Штука при рекурсивном обходе выдаёт каталоги, где кол-во файла варьируеццо от 15 до 30. Думаю, сама сможешь подправить, что нужно ;)

Код::

#!/bin/bash

#Function description

 search()
 {

 #Initializing settings
   dir_name=$1
   dir_quant=0
   file_quant=0

   #Start to calculate
   cd $1

   if [ $? -eq 0 ]
   then

     for data in *
      do
       if [ -d $data ]
       then
        search $data
       fi

    file_quant=`ls -l |grep ^- |wc -l`

     done

   if [ $file_quant -ge 15 -a $file_quant -le 30 ]
    then
     echo "`pwd`$file_quant" >> ~/search.result
    fi

  cd ..

  fi
 }

#Start

 2>/dev/null
 rm ~/search.result

#Checking for correct input data
 if [ $# -eq 1 ]
  then
   search $1
  else
  echo "Sorry, but this programm should have one parameter!"
 fi

Offline

#5  19.12.06 22:10

Re: Помогите написать программку на Cshell.

Брр... пример ф студию!

Offline

#6  19.12.06 22:24

Re: Помогите написать программку на Cshell.

неужели нельзя попроще?

Offline

#7  19.12.06 23:34

asp
Профиль

Re: Помогите написать программку на Cshell.

Ой... как сложно все. Неужели нельзя проще?

Код: bash:

#обнули переменную
for i in `ls -1`;
do
    if [ -d $i ]; then
#увеличивай переменную на 1
        cd $i
#запускай этот же файл снова
        cd ..
        echo ***In folder: $i <столько-то> субфолдеров***
    fi
done

Исправлено asp (19.12.06 23:35)

Offline

#8  20.12.06 00:26

Re: Помогите написать программку на Cshell.

Укроп написал(а):

[-Son4ick-] написал(а):

нужно не с помощью встроенных команд, типа find

find кажется не встроеная команда )

asp написал(а):

Неужели нельзя проще?

шаман батенька %)

Это не я бляяя...

Offline

#9  20.12.06 09:27

asp
Профиль

Re: Помогите написать программку на Cshell.

Виноват, не учел, что каталог должен быть аргументом. Но думаю, это не будет проблемой :)

Offline

#10  20.12.06 22:26

Re: Помогите написать программку на Cshell.

а как снова запустить тот файл?

Offline

#11  21.12.06 13:52

asp
Профиль

Re: Помогите написать программку на Cshell.

по абсолютному пути. Если он у тебя /home/user/script то так и запускай:

Код: bash:

...
   cd $i
   /home/user/script #этот же файл снова
   cd ..
...


Или если все равно параметр передавать, можно не цд, а сразу:

Код: bash:

...
   if [ -d $i ]; then
#увеличивай переменную на 1
      /home/user/script $i
      echo ***In folder: $i <столько-то> субфолдеров***
   fi
...

Только тогда проверь параметры для ls

P.S.:
Как вариант - возвращать значение скриптом. Тогда будет рекурсия элегантней смотреться:

Код: bash:

echo ***In folder: $i `/home/user/script $i` субфолдеров***

Исправлено asp (21.12.06 13:57)

Offline

#12  21.12.06 22:29

Re: Помогите написать программку на Cshell.

спасибо большое, asp !!!!!!!!!!

Offline

Software » Помогите написать программку на Cshell. 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.047 сек.
Выполнено 14 запросов.