【问题标题】: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 告诉我并问我是否希望覆盖?或者只是告诉我它已经存在不能重命名?

有什么办法吗?

【问题讨论】:

标签: linux bash command-line mv


【解决方案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

【讨论】:

  • 这不是正确的答案。也许你没有理解需求。
猜你喜欢
  • 1970-01-01
  • 2020-02-21
  • 2023-02-12
  • 2012-06-26
  • 2012-03-13
  • 2016-08-26
  • 2014-12-19
  • 2013-12-23
  • 1970-01-01
相关资源
最近更新 更多