콜론이 있는 모든 디렉토리를 공백으로 변경

콜론이 있는 모든 디렉토리를 공백으로 변경

콜론이 있는 디렉토리가 많이 있습니다.

예를 들어

Main_Dir:
-Di_name: Test1-1
--files
-Di_name: Test2-2
--files

(콜론)을 제거하고 싶습니다. 공백으로 바꾸거나 직접 제거하세요.

이 목표를 어떻게 달성할 수 있나요?

나는 데비안을 사용하고 있습니다

답변1

Bash, Ksh 또는 Zsh와 모든 디렉터리가 동일한 수준에 있다고 가정합니다.

# loop over the directories
for i in */; do
  # if they have a ':' semi-colon in their name
  # replace ':' using parameter expansion¹, (the space is already there)
  [[ "$i" = *:* ]] && mv -- "$i" "${i/:}"
done

^쉘 매개변수 확장

답변2

-print0POSIX 표준이 아니지만( 및 옵션 으로 인해 -d '') 매우 안전하고 방탄 방식입니다.

cd /the/dir/containing/colon/dirnames
find . -maxdepth 1 -type d -name '*:*' -print0 | while read -r -d '' DIR ; do mv -- "$DIR" "$(echo "$DIR" | sed 's/://g')" ; done

디렉터리 이름에 줄 바꿈이나 기타 장난스러운 바이트가 포함되어 있어도 안전하게 작동합니다.

관련 정보