我构建了一个脚本来使用“mv”命令重命名特定目录的所有子目录(将第一个字母更改为大写)。不幸的是,这是不可能的,我收到了错误(下面是一个示例):
无法将“mechanics”移动到其自身的子目录“Mechanics/mechanics”
#!/bin/bash
for name in *
do
if [ -d "$name" ]; then
echo "$name"
newname="$(tr '[:lower:]' '[:upper:]' <<< ${name:0:1})${name:1}"
mv "$name" "$newname"
fi
done
我该如何解决这个问题?
答案1
假设:文件系统不区分大小写,因此Mechanics
和mechanics
寻址相同的目录。
可以通过临时名称重命名mechanics
为:Mechanics
mv mechanics foo
mv foo Mechanics
然后该目录可能会显示为,Mechanics
但您仍然可以将其称为mechanics
或什至mECHaniCS
。
答案2
您的脚本是正确的,但您已经有了力学当前目录中的文件夹以及力学您收到错误的文件夹。