"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
귀하의 스크립트는 정확하지만 이미역학현재 디렉토리의 폴더 및역학잘못된 폴더를 받았습니다.