Я пишу код для обмена верхнего и нижнего алфавита имени файла в определенной директории. Если каталог не может получить доступ, он показывает сообщение об ошибке.
#!/bin/bash
if [ $# -eq 0 ];then
path=$(pwd)
for a in "$path"/*
do
mv "$i" "`echo $i | tr '[:upper:][:lower:]' '[:lower:][:upper:]'`"
done
else
if [ ! -d "$1" ];then
echo "Unable to access directory!"
else
for i in "$1"/*
do
mv "$i" "`echo $i | tr '[:upper:][:lower:]' '[:lower:][:upper:]'`"
done
fi
fi
Проблема заключается в том, что, когда я повторяю $i
, это не express ТОЛЬКО имя файла, но имя файла с каталогом! Таким образом, когда я пытаюсь скопировать файл, меняется не только имя файла, но и имя каталога ТАКЖЕ, поэтому я не могу скопировать файл. Например:
mv: cannot move 'test3/Ipad.txt' to 'TEST3/iPAD.TXT': No such file or directory
mv: cannot move 'test3/iPhone' to 'TEST3/IpHONE': No such file or directory
mv: cannot move 'test3/macOS' to 'TEST3/MACos': No such file or directory
как мне изменить имена файлов в определенном каталоге?
Любая помощь будет полезна, и спасибо заранее.