Shell-Script
將所有帶有冒號的目錄更改為空格
我有很多帶有冒號的目錄。
例如
Main_Dir: -Di_name: Test1-1 --files -Di_name: Test2-2 --files
我想刪除(冒號):amd 將其替換為空格或將其刪除。
我怎樣才能做到這一點?
我正在使用 Debian
假設 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
非 POSIX 標準(由於
-print0
and-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
即使目錄名稱包含換行符或其他惡作劇字節,也應該安全工作。