重命名一个目录,确保它不存在
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】:您可以做的是,使用i
和T
选项。
T
会将目标视为普通文件,因此如果目标目录存在,则不会“移入”; i
会让你确认。在您的情况下,它将是:
mv -iT dir1 dir2
如果dir2
不存在,则不会显示确认消息。
注意,如果target dir2不为空,即使你确认了也不能mv。
如果你想覆盖,你需要写一个小函数/脚本来做。
【讨论】:
谢谢,这是我想知道的解决方案:p。 dir2 不为空时不能重命名也是有意义的,因为它不仅会重命名,还会连接文件。我猜这不在这个命令的权力范围内? @boselfje 你可以编写函数/脚本检查目标是否退出,如果为真,询问确认,接收'y',执行mv dir1/* dir2
之类的操作,然后重命名 dir2 -> dir1。当然,如果有必要,你必须处理现有的子目录。【参考方案2】:
如果您将mv
与选项i
一起使用,它会提示并检查您是否愿意覆盖现有目录(如果存在)。
如果dir1
和dir2
存在并且你尝试如下它会提示你。如果 dir2 不存在则不会提示。
mv -i dir1 dir2
【讨论】:
这不是正确的答案。也许你没有理解需求。以上是关于重命名一个目录,确保它不存在的主要内容,如果未能解决你的问题,请参考以下文章