Witam,

Potrzebuje wykonać skrypt powłoki bash, który będzie wykonywał poniższą instrukcję:

Napisać skrypt, który zmieni nazwy plików i katalogów, z katalogu podanego przez użytkownika.
a) Jeżeli nazwa jest małymi literami to na taką samą dużymi literami.
b) Jeżeli pierwszy znak nazwy to duża litera to zamieni ją na cyfrę.

Wzór:
Dokumenty 1okumenty
zadanie ZADANIE
ASD 123

Skrypt, który stworzyłem nie działa poprawnie. Jeżeli folder, który podaje jest z małych liter to zmienia je poprawnie na duże Identycznie jeżeli wszystkie litery są duże (zamienia poprawnie na cyfry). Jeżeli nazwa jest z dużej litery (pierwszy znak), zmienia nazwę folderu głównego poprawnie, ale zwraca też przy tym błąd "mv: cannot stat 'Nazwa' : no such file or directory".
W żadnym przypadku nie zmienia jednak nazw zawartych w środku katalogów i plików.

Z góry dzięki, za pomoc w poprawieniu.

#!/bin/bash

read k

if [ -d $k ]
then

    for of in $k; 
    do
        na=`echo -n "$of" | tr A-Z 1-9`;
        nf=`echo -n "$of" | tr a-z A-Z`;
        
        if [ "$na" != "$of" ]; 
        then
           mv -- "$of" "$na"
        fi


        if [ "$nf" != "$of" ]; 
        then
           mv -- "$of" "$nf"
        fi

    done
else
    echo 'blad'
fi

dodanie znacznika <code class="bash"> - fp