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