![디렉토리 이름을 다시 포맷하는 방법은 무엇입니까?](https://linux55.com/image/98852/%EB%94%94%EB%A0%89%ED%86%A0%EB%A6%AC%20%EC%9D%B4%EB%A6%84%EC%9D%84%20%EB%8B%A4%EC%8B%9C%20%ED%8F%AC%EB%A7%B7%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
다음과 같은 이름을 가진 디렉토리가 많이 있습니다.
geom1 geom10 geom11 geom12 geom13 geom14 geom15 geom16 geom17 geom18 geom19 geom2 geom20 geom3 geom4 geom5 geom6 geom7 geom8 geom9
이름을 이렇게 바꾸고 싶어요
geom0000001 geom0000002 geom0000003 geom0000004 geom0000005 geom0000006 geom0000007 geom0000008 geom0000009 geom0000010 geom0000011 geom0000012 geom0000013 geom0000014 geom0000015 geom0000016 geom0000017 geom0000018 geom0000019 geom0000020
다음 스크립트를 사용했습니다.
a=1 for
i in geom*/; do
new=$(printf "geom%07d" "$a")
mv -- "$i" "$new"
let a=a+1
done
예를 들어 질문은 geom10
" geom0000002
아니요"로 이동하다가 geom0000002
"아니요"로 이동 합니다.geom2
geom0000012
geom0000002
내가 원하는 것은 동일한 순서를 사용하지만 새로운 형식을 사용하여 디렉토리 이름을 바꾸는 것입니다.
답변1
노력하다
for i in geom*
do
new=$(printf "geom%07d" "${i##geom}")
echo "$i" "$new"
done
어디
##geom
건설은 var에서 geom을 제거합니다.- 만족스러우면 다음
echo
으로 교체하세요.mv
답변2
이는 권장되는 해결 방법은 아니지만 작동합니다. 위에서 언급한 특정 상황에서만 사용하는 것이 좋습니다. 결과를 반복하는 ls
것은 권장되지 않습니다. 다른 폴더 이름이 있거나 보다 일반적인 상황에서 사용하려면 다른 해결 방법을 찾아야 합니다.
for i in geom*; do
nr=$(echo $i | cut -d'm' -f2);
#printf "geom%07d" "$nr";
mv "${i}" "$(printf "geom%07d" "$nr")"
done