コロンを含むすべてのディレクトリを空白に変更する

コロンを含むすべてのディレクトリを空白に変更する

コロンのあるディレクトリがたくさんあります。

例えば

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

(コロン)を削除したいです。スペースに置き換えるか、自分で削除してください。

この目標をどのように達成できますか?

私はDebianを使用しています

答え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

ディレクトリ名に改行やその他のいたずらなバイトが含まれていても、安全に機能します。

関連情報