"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
あなたのスクリプトは正しいですが、すでに力学現在のディレクトリのフォルダと力学間違ったフォルダを受け取りました。