Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Bash скрипт


Автор: 123456789igor 4.3.2012, 21:50
Есть пример. Но не могу разобраться с ним. Если не тяжело обьясните как работает эта программа и напишите комментарии.
Linux Bash.
Условие:
Написать скрипт находящий в заданном каталоге и всех его подкаталогах все файлы, владельцем которых является заданный пользователь. Имя владельца и каталог задаются пользователем в качестве первого и второго аргумента командной строки. Скрипт выводит результаты в файл (третий аргумент командной строки) в виде полный путь, имя файла, его размер. На консоль выводится общее число просмотренных файлов. 

Код

#!/bin/bash
 
if [[ ! -d $2 ]] ;
then
    echo "Путь $2 не существует или не является каталогом"
    exit 1
fi
 
search ()
{
    if [ ! -r $2 ];
    then #нет доступа
        echo "$2 Ошибка. Нет Доступа"
    else 
    for f in $(ls $2)
    do
        if [ -d $2/$f ]; then 
            search $1 "$2/$f" $3
        else
            if [ $1 = $( stat "$2/$f" -c %U ) ]; then
                if [ "$filescount" -eq "0" ]; then
                    echo $2/$f $( stat $2/$f -c %s) >  "$3" 
                else
                    echo $2/$f $( stat $2/$f -c %s) >> "$3"
                fi
            let "filescount=filescount+1"
            fi
        fi
        done  
    fi
}
 
let "filescount=0"
search $@ 2>/dev/null
echo "$filescount файлов найдено"

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)