Shell-Script

將所有帶有冒號的目錄更改為空格

  • March 10, 2021

我有很多帶有冒號的目錄。

例如

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 標準(由於-print0and-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

即使目錄名稱包含換行符或其他惡作劇字節,也應該安全工作。

引用自:https://unix.stackexchange.com/questions/638565