如何在bash中重命名目录,而不覆盖或移动到预先存在的目标中?

如何在bash中重命名目录,而不覆盖或移动到预先存在的目标中?,bash,directory,rename,Bash,Directory,Rename,我想重命名一个目录,仅当目标不存在时 要做到这一点,语法应该是 mv-n-T my/dir my/dirNew 其中-n表示“不覆盖”,而-t表示“不移动到目标” () 不幸的是,-T在OSX上不是一个选项,因此任何使用它的脚本在OSX上都不起作用 那么,如果一个目录不会被覆盖,我如何重命名它呢? 我已经检查过了,rename不是我可以依赖的标准。如果不需要完全使用mv命令来实现相同的功能,您可以像这样做: [ ! -d "$destination_dir_name" ] &&

我想重命名一个目录,仅当目标不存在时

要做到这一点,语法应该是

mv-n-T my/dir my/dirNew

其中-n表示“不覆盖”,而-t表示“不移动到目标”

()

不幸的是,
-T
在OSX上不是一个选项,因此任何使用它的脚本在OSX上都不起作用

那么,如果一个目录不会被覆盖,我如何重命名它呢?


我已经检查过了,
rename
不是我可以依赖的标准。

如果不需要完全使用
mv
命令来实现相同的功能,您可以像这样做:

[ ! -d "$destination_dir_name" ] && mv -n "$current_dir_name" "$destination_dir_name"

[!-d“$destination\u dir\u name”]
仅在没有此类目录时计算为true。如果计算结果为真,
&&
将确认执行
mv“$current\u dir\u name”“$destination\u dir\u name

我将使用
[-e…
(因为那里可能有目录以外的内容),并且还将所有变量引用用双引号括起来(如果路径包含任何有趣的字符,则避免解析问题).@GordonDavisson,没错,我用双引号括起来了。
-e
也对,但我最好在
mv
命令中加一个
-n