重命名一个目录,确保它不存在

Posted

技术标签:

【中文标题】重命名一个目录,确保它不存在【英文标题】:rename a dir making sure it doesn't exist already 【发布时间】:2015-09-02 15:06:36 【问题描述】:

我想知道关注

假设您在 linux dir1 和 dir2 中有两个目录。现在当我这样做时

mv dir1 dir2

然后 dir1 被移动到 dir2。

但是如果我想将 dir1 重命名为 dir2 怎么办?虽然 dir2 已经存在,让 bash 告诉我并问我是否希望覆盖?或者只是告诉我它已经存在不能重命名?

有什么办法吗?

【问题讨论】:

Is there a way to make mv create the directory to be moved to if it doesn't exist? 的可能重复项 【参考方案1】:

您可以做的是,使用iT 选项。

T 会将目标视为普通文件,因此如果目标目录存在,则不会“移入”; i 会让你确认。在您的情况下,它将是:

mv -iT dir1 dir2

如果dir2 不存在,则不会显示确认消息。

注意,如果target dir2不为空,即使你确认了也不能mv。

如果你想覆盖,你需要写一个小函数/脚本来做。

【讨论】:

谢谢,这是我想知道的解决方案:p。 dir2 不为空时不能重命名也是有意义的,因为它不仅会重命名,还会连接文件。我猜这不在这个命令的权力范围内? @boselfje 你可以编写函数/脚本检查目标是否退出,如果为真,询问确认,接收'y',执行mv dir1/* dir2 之类的操作,然后重命名 dir2 -> dir1。当然,如果有必要,你必须处理现有的子目录。【参考方案2】:

如果您将mv 与选项i 一起使用,它会提示并检查您是否愿意覆盖现有目录(如果存在)。

如果dir1dir2 存在并且你尝试如下它会提示你。如果 dir2 不存在则不会提示。

mv -i dir1 dir2

【讨论】:

这不是正确的答案。也许你没有理解需求。

以上是关于重命名一个目录,确保它不存在的主要内容,如果未能解决你的问题,请参考以下文章

redis键重命名

Linux 重命名文件

重命名没有正确分配名称的文件

如果文件存在,Powershell 移动项目重命名

mv命令(移动和重命名)

播放框架1.2.5应用项目如何重命名