Sunteți pe pagina 1din 2

#!

/bin/bash

# Aceasta functie este apelata cand utilizatorul are nevoie de ajutor cu privire la
utilizarea scriptului.
function help {
echo "Utilizare: $0 director extensie [extensie2 ...]"
echo "Descriere: Scriptul afișează numărul și lista fișierelor de un anumit tip
dintr-un director dat."
}

# Aceasta functie verifica daca parametrul dat este un director, un fișier sau
altceva.
# Ea returneaza 0 pentru director, 1 pentru fișier și 2 pentru orice altceva.
function test_fisier_director {
if [ -d "$1" ]; then
return 0 # Director existent
elif [ -f "$1" ]; then
return 1 # Fisier existent
else
return 2 # Altceva
fi
}

# Aceasta functie numara si listeaza fisierele cu extensiile specificate din


directorul dat.
# Primeste ca prim argument directorul si apoi una sau mai multe extensii de
fisiere.
# Rezultatele vor fi afișate pe ecran și numărul total de fișiere va fi returnat.
function numara_fisiere_extensie {
local director=$1
shift # Eliminam primul argument care este directorul
local extensii=("$@") # Restul argumentelor sunt extensiile
local contor_fisiere=0

# Iteram prin fiecare extensie data ca parametru


for extensie in "${extensii[@]}"; do
local fisiere=( "$director"/*.$extensie ) # Array cu toate fisierele care
corespund extensiei
local numar_fisiere=${#fisiere[@]}

if (( numar_fisiere > 0 )); then


echo "Fisiere cu extensia .$extensie: $numar_fisiere"
printf "%s\n" "${fisiere[@]}"
else
echo ".$extensie - nu exista fisiere"
fi
contor_fisiere=$((contor_fisiere + numar_fisiere))
done

return $contor_fisiere
}

#!/bin/bash

# Importăm funcțiile
source ./functions.sh

# Verificăm dacă numărul de argumente este corect


if [ "$#" -lt 2 ]; then
help
exit 1
fi

# Verificăm dacă primul argument este un director


test_fisier_director "$1"
type=$?

if [ $type -ne 0 ]; then


if [ $type -eq 1 ]; then
echo "Eroarea: Primul parametru este un fișier, dar ar trebui să fie un
director."
else
echo "Eroarea: Primul parametru nu este nici fișier, nici director."
fi
exit 2
fi

# Înregistrăm toate ieșirile într-un fișier de log


log_file="${0##*/}.log"
echo "Rezultatele rulării scriptului:" > "$log_file"

# Extragerea directorului din argumente


director=$1
shift

# Apelăm funcția pentru a număra și lista fișierele și redirecționăm ieșirea în


fișierul de log
numara_fisiere_extensie "$director" "$@" >> "$log_file"

# Afișăm conținutul fișierului de log


cat "$log_file"

S-ar putea să vă placă și