#!/bin/bash

function zpracuj() {
  vyhovuje=1
  vytisteno=0
  parametry=$3

  while [ "$parametry" ]
  do
  co=`echo "$parametry"|awk '{print $1}'`
  parametry=`echo "$parametry"|sed 's/^[^ ]* //'`
  vytisteno=0
  case "$co" in
    -links) 
            if test `echo $2|awk '{print $2}'` -ne `echo "$parametry"|awk '{print $1}'`; then 
            vyhovuje=0
            fi
            parametry=`echo "$parametry"|sed 's/^[^ ]* //'`
            vytisteno=0;;
    -type)  
            typ=`echo "$parametry"|awk '{print $1}'`
            typ=`echo "$typ"|sed 's/f/-/'`
            parametry=`echo "$parametry"|sed 's/^[^ ]* //'`
            if [ `echo $2|awk '{print substr($0,1,1)}'` != "$typ" ]; then 
            vyhovuje=0
            fi
            vytisteno=0;;
    -perm)  
            prava=`echo "$parametry"|awk '{print $1}'`
            parametry=`echo "$parametry"|sed 's/^[^ ]* //'`
            poc=`echo "$parametry"|awk -F, '{print NF}'`

            pom=`echo "$prava"|awk -F, '{print $1}'`
            case "$pom" in
             u=*) case "$pom" in 
                  *r*) pr="r";;
                  *) pr="-";;
                 esac 
                 case "$pom" in 
                  *w*) pr=$pr"w";;
                  *) pr=$pr"-";;
                 esac 
                 case "$pom" in 
                  *x*) pr=$pr"x";;
                  *) pr=$pr"-";;
                 esac
                 prava=`echo "$prava"|sed 's/^[^,]*//'`
                 prava=`echo "$prava"|sed 's/^[^,]*,//'`;;
              g=*) pr="---";;
            esac
            
            if [ "$prava" ]; then
            pom=`echo "$prava"|awk -F, '{print $1}'`
            case "$pom" in
             g=*) case "$pom" in 
                  *r*) pr=$pr"r";;
                  *) pr=$pr"-";;
                 esac 
                 case "$pom" in 
                  *w*) pr=$pr"w";;
                  *) pr=$pr"-";;
                 esac 
                 case "$pom" in 
                  *x*) pr=$pr"x";;
                  *) pr=$pr"-";;
                 esac
                 prava=`echo "$prava"|sed 's/^[^,]*//'`
                 prava=`echo "$prava"|sed 's/^[^,]*,//'`;;
              o=*) pr=$pr"---";;
            esac
            fi
            
            if [ "$prava" ]; then
            pom=`echo "$prava"|awk -F, '{print $1}'`
            case "$pom" in
             o=*) case "$pom" in 
                  *r*) pr=$pr"r";;
                  *) pr=$pr"-";;
                 esac 
                 case "$pom" in 
                  *w*) pr=$pr"w";;
                  *) pr=$pr"-";;
                 esac 
                 case "$pom" in 
                  *x*) pr=$pr"x";;
                  *) pr=$pr"-";;
                 esac 
            esac
            
            fi
            if [ `echo $2|awk '{print substr($0,2,9)}'` != $pr ]; then
             vyhovuje=0
            fi 
            vytisteno=0;;
      
    -follow)
            case "$2" in
            *" -> "*) vnoreno `echo $2|awk '{print $11}'` "$1/`echo $2|awk '{print $9}'`" "$3"
            esac;;
            
    -print) test $vyhovuje -eq 1 && echo "$1/`echo $2|awk '{print $9}'`"
            vytisteno=1;;
  esac
  parametry=`echo "$parametry"|sed 's/^[^ ]*$//'` 
  done
  
  [ $vyhovuje -eq 1 ] && [ $vytisteno -eq 0 ] && echo "$1/`echo $2|awk '{print $9}'`"
  
}

function vnoreno () {
ls -lRAL "$1" | {
	while read L; do
    case "$L" in
			'');; 
			total*);;
			*:) dir=`echo "$L"|sed 's/:$//'`;;
			*) zpracuj "$2/`echo "$dir"|sed "s/$1//"`" "$L" "$3";;
		esac
	done	
}
}

ls -lRA "$1" | {
	while read L; do
    case "$L" in
			'');;
			total*);;
			*:) dir=`echo "$L"|sed 's/:$//'`;;
			*) zpracuj "$dir" "$L" "`echo "$*"|sed 's/^[^ ]* //'`";;
		esac
	done	
}

	
