使用 bash 我试图用空格替换目录名称中的所有点及其子目录。
示例:目录dir.1.3 将变为dir 1 3
我到目前为止的脚本:
#!/bin/bash
for dir in *\ -\ *; do
[[ -d "$dir" ]] || continue # skip if not a directory
sub="${dir#* - }"
if [[ ! -e "$sub" ]]; then
mv "$dir" "$sub"
mv echo "$(echo "Result: ${dir%.*}" | sed 's/\./ /g').${dir##*.}"
fi
done
使用
find
:*.*
这会在当前目录中以模式递归查找所有目录名称,并使用-mindepth 1
. 找到的目录列表被传递-exec
给一个 bash 脚本,它的参数在 for 循环中以相反的顺序处理(具有更深层次的子目录首先出现)。新目录名称是从其
dirname
和创建的basename
。后者被修改为tr
多个点被一个空格字符替换(-s
如果你想用多个空格替换多个点,请删除选项)。如果新目录名称已存在或移动它,则打印错误消息。